THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
Request | |
---|---|
4 bytes | Magic number 49 47 4E 49, or "IGNI". Helps identifying misconfigured SSL or other apps probing the port. |
fixint / uint | Payload length |
positive fixint | Version major |
positive fixint | Version minor |
positive fixint | Version patch |
positive fixint | Client code (1 for JDBC, 2 for general-purpose client) |
bin | Features (bitmask) |
map (int → any) | Extensions (auth, attributes, etc). Server can skip unknown extension data (when client is newer). |
Response | |
---|---|
4 bytes | Magic number 49 47 4E 49, or "IGNI". Helps identifying misconfigured SSL or different server on the port. |
fixint / uint | Payload length |
positive fixint | Server version major |
positive fixint | Server version minor |
positive fixint | Server version patch |
boolean | Success flag |
string | When success flag is false: Error message |
bin | When success flag is true: Server features (bitmask) |
map (int → any) | When success flag is true: Extensions (auth, attributes, etc). Client can skip unknown extension data (when server is newer). |
Upon successful handshake client can start performing operations by sending a request with specific op code. Each operation has it's own request and response format, with a common header.
Request | |
short | Operation code |
long | Request id, generated by client and returned as-is in response |
... | Operation-specific data |
TODO: server → client notifications, how do we handle them easier?
Response | |
long | Request id (see above) |
int | Status code (0 for success, otherwise error code) |
string | Error message (present only when status is not 0) |
... | Operation-specific data |
Operation codes and request ids are omitted everywhere below for brevity.
TODO
...