| | |
| | | | ... | ... | ... | |
| | | |
| | | ## Base Packet Format |
| | | | Name | Description | Type | |
| | | |---------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------| |
| | | | Packet Length | The total number of bytes in the packet, not including the length itself. | `u32` | |
| | | | Protocol Name | The protocol service on the server that is responsible for managing this request | [`String`](./03_rendezvous_structure.md#string) | |
| | | | Is Request? | Whether or not this packet is for a _request_. | `bool` | |
| | | | ... | See [Request Packet Format](#request-packet-format) or [Response Packet Format](#response-packet-format) for parsing the packet depending on `Is Request?`. | ... | |
| | | |
| | | ##### Parsing |
| | | | Name | Description | Type | |
| | | |---------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------| |
| | | | Packet Length | The total number of bytes in the packet, not including the length itself. | `u32` | |
| | | | Protocol Name | The protocol service on the server that is responsible for managing this request | [`String`](./03_rendezvous_structure.md#structure-string) | |
| | | | Is Request? | Whether or not this packet is for a _request_. | `bool` | |
| | | | ... | See [Request Packet Format](#request-packet-format) or [Response Packet Format](#response-packet-format) for parsing the packet depending on `Is Request?`. | ... | |
| | | |
| | | ## Request Packet Format |
| | | Example: |
| | | |
| | | ##### Example |
| | | ``` |
| | | Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F |
| | | 00000000 F8 00 00 00 0E 00 4C 6F 67 69 6E 50 72 6F 74 6F ø.....LoginProto |
| | | 00000000 F9 00 00 00 0E 00 4C 6F 67 69 6E 50 72 6F 74 6F ù.....LoginProto |
| | | 00000010 63 6F 6C 00 01 06 00 00 00 1B 00 4C 6F 67 69 6E col........Login |
| | | 00000020 50 72 6F 74 6F 63 6F 6C 3A 3A 52 65 67 69 73 74 Protocol::Regist |
| | | 00000030 65 72 5F 56 31 00 00 00 00 00 04 00 00 00 2F 00 er_V1........./. |
| | | 00000040 70 72 75 64 70 3A 2F 61 64 64 72 65 73 73 3D 31 prudp:/address=1 |
| | | 00000050 36 39 2E 32 35 34 2E 38 33 2E 31 30 37 3B 70 6F 69.254.83.107;po |
| | | 00000040 70 72 75 64 70 3A 2F 61 64 64 72 65 73 73 3D 30 prudp:/address=0 |
| | | 00000050 30 30 2E 30 30 30 2E 30 30 2E 30 30 30 3B 70 6F 00.000.00.000;po |
| | | 00000060 72 74 3D 39 31 30 33 3B 73 69 64 3D 31 35 00 2E rt=9103;sid=15.. |
| | | 00000070 00 70 72 75 64 70 3A 2F 61 64 64 72 65 73 73 3D .prudp:/address= |
| | | 00000080 31 39 32 2E 31 36 38 2E 30 2E 32 35 31 3B 70 6F 192.168.0.251;po |
| | | 00000080 30 30 30 2E 30 30 30 2E 30 30 30 2E 30 3B 70 6F 000.000.000.0;po |
| | | 00000090 72 74 3D 39 31 30 33 3B 73 69 64 3D 31 35 00 2D rt=9103;sid=15.- |
| | | 000000A0 00 70 72 75 64 70 3A 2F 61 64 64 72 65 73 73 3D .prudp:/address= |
| | | 000000B0 31 39 32 2E 31 36 38 2E 35 36 2E 31 3B 70 6F 72 192.168.56.1;por |
| | | 000000C0 74 3D 39 31 30 33 3B 73 69 64 3D 31 35 00 2C 00 t=9103;sid=15.,. |
| | | 000000D0 70 72 75 64 70 3A 2F 61 64 64 72 65 73 73 3D 31 prudp:/address=1 |
| | | 000000E0 37 32 2E 32 30 2E 33 32 2E 31 3B 70 6F 72 74 3D 72.20.32.1;port= |
| | | 000000F0 39 31 30 33 3B 73 69 64 3D 31 35 00 9103;sid=15. |
| | | 000000B0 30 30 30 2E 30 30 30 2E 30 30 2E 30 3B 70 6F 72 000.000.00.0;por |
| | | 000000C0 74 3D 39 31 30 33 3B 73 69 64 3D 31 35 00 2D 00 t=9103;sid=15.-. |
| | | 000000D0 70 72 75 64 70 3A 2F 61 64 64 72 65 73 73 3D 30 prudp:/address=0 |
| | | 000000E0 30 30 2E 30 30 30 2E 30 30 2E 30 3B 70 6F 72 74 00.000.00.0;port |
| | | 000000F0 3D 39 31 30 33 3B 73 69 64 3D 31 35 00 =9103;sid=15. |
| | | ``` |
| | | |
| | | | Name | Description | Type | |
| | | |----------------|-------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------| |
| | | | ... | See [Base Packet Format](#base-packet-format) for parsing the prologue of a request packet. | ... | |
| | | | Call ID | The nonce token for this call to identify the response associated with this request. | `u32` | |
| | | | Method Name | The method to call on the server. | [`String`](./03_rendezvous_structure.md#string) | |
| | | | Class Versions | Version information about the data in the request | [`List`](./03_rendezvous_structure.md#list)`<`[`ClassVersion`](#class-version)`>` | |
| | | | Request Data | Raw data to pass to the request handler, see the respective [protocol and method specification](#known-protocols) to write and read this. | `<remaining bytes>` | |
| | | ##### Parsing |
| | | | Name | Description | Type | |
| | | |----------------|-------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------| |
| | | | ... | See [Base Packet Format](#base-packet-format) for parsing the prologue of a request packet. | ... | |
| | | | Call ID | The nonce token for this call to identify the response associated with this request. | `u32` | |
| | | | Method Name | The method to call on the server. | [`String`](./03_rendezvous_structure.md#structure-string) | |
| | | | Class Versions | Version information about the data in the request | [`List`](./03_rendezvous_structure.md#structure-listt)`<`[`ClassVersion`](#class-version)`>` | |
| | | | Request Data | Raw data to pass to the request handler, see the respective [protocol and method specification](#known-protocols) to write and read this. | `<remaining bytes>` | |
| | | |
| | | ### `ClassVersion` |
| | | Example: |
| | |
| | | 00000010 6E 66 6F 00 01 00 nfo... |
| | | ``` |
| | | |
| | | | Name | Description | Type | |
| | | |----------------|---------------------------------------------------|-------------------------------------------------| |
| | | | Structure Name | The name of the structure to assign a version to. | [`String`](./03_rendezvous_structure.md#string) | |
| | | | Version | The version of the structure. | `u16` | |
| | | | Name | Description | Type | |
| | | |----------------|---------------------------------------------------|-----------------------------------------------------------| |
| | | | Structure Name | The name of the structure to assign a version to. | [`String`](./03_rendezvous_structure.md#structure-string) | |
| | | | Version | The version of the structure. | `u16` | |
| | | |
| | | ## Response Packet Format |
| | | Examples: |
| | | |
| | | ##### Example |
| | | ``` |
| | | Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F |
| | | 00000000 25 00 00 00 0E 00 4C 6F 67 69 6E 50 72 6F 74 6F %.....LoginProto |
| | |
| | | > [!NOTE] |
| | | > TODO: Successful response example |
| | | |
| | | ##### Parsing |
| | | | Name | Description | Type | |
| | | |----------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------| |
| | | | ... | See [Base Packet Format](#base-packet-format) for parsing the prologue of a response packet. | ... | |
| | |
| | | |
| | | ### Successful Response Format |
| | | |
| | | | Name | Description | Type | |
| | | |---------------|--------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------| |
| | | | Call ID | The nonce token for the call to associate the response to the request. | `u32` | |
| | | | Method Name | The method that was called by the client. | [`String`](./03_rendezvous_structure.md#string) | |
| | | | Response Data | Raw data to pass to the response handler, see the respective [protocol and method specification](#known-protocols) to write and read this. | `<remaining bytes>` | |
| | | ##### Parsing |
| | | | Name | Description | Type | |
| | | |---------------|--------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------| |
| | | | ... | See [Response Packet Format](#response-packet-format) for parsing the prologue of a successful response packet. | ... | |
| | | | Call ID | The nonce token for the call to associate the response to the request. | `u32` | |
| | | | Method Name | The method that was called by the client. | [`String`](./03_rendezvous_structure.md#structure-string) | |
| | | | Response Data | Raw data to pass to the response handler, see the respective [protocol and method specification](#known-protocols) to write and read this. | `<remaining bytes>` | |
| | | |
| | | ### Unsuccessful Response Format |
| | | |
| | | | Name | Description | Type | |
| | | |-----------------|------------------------------------------------------------------------|-------------------------------------------------| |
| | | | Error Namespace | The category of error that occurred. | [`String`](./03_rendezvous_structure.md#string) | |
| | | | Error Code | The code of the error in the specified namespace | `u16` | |
| | | | Call ID | The nonce token for the call to associate the response to the request. | `u32` | |
| | | ##### Parsing |
| | | | Name | Description | Type | |
| | | |-----------------|--------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------| |
| | | | ... | See [Response Packet Format](#response-packet-format) for parsing the prologue of an unsuccessful response packet. | ... | |
| | | | Error Namespace | The category of error that occurred. | [`String`](./03_rendezvous_structure.md#structure-string) | |
| | | | Error Code | The code of the error in the specified namespace | `u16` | |
| | | | Call ID | The nonce token for the call to associate the response to the request. | `u32` | |