Striven
2025-09-10 efb55753c680578cf2d68eabf5e5465b7ec9b86c
04_rendezvous/05_rmc_protocol.md
@@ -13,15 +13,18 @@
| ...                                                                 | ...                                                               | ...                  |
## 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
@@ -42,13 +45,14 @@
000000F0  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:
@@ -58,13 +62,14 @@
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
@@ -75,6 +80,7 @@
> [!NOTE]
> TODO: Successful response example
##### Parsing
| Name           | Description                                                                                                                                                                           | Type   |
|----------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------|
| ...            | See [Base Packet Format](#base-packet-format) for parsing the prologue of a response packet.                                                                                          | ...    |
@@ -83,16 +89,20 @@
### 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`                                                     |