This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
gamedev:remotelaunching:networkprotocol [2024/11/21 17:39] – [Request Finish Write File] dragonlord | gamedev:remotelaunching:networkprotocol [2024/12/09 13:30] (current) – dragonlord | ||
---|---|---|---|
Line 52: | Line 52: | ||
===== Response File Layout ===== | ===== Response File Layout ===== | ||
- | Send by the client in response to a [[# | + | Send by the client in response to a [[# |
^ Type ^ Name ^ Description | ^ Type ^ Name ^ Description | ||
| [[gamedev: | | [[gamedev: | ||
- | | [[gamedev: | + | | [[gamedev: |
- | * '' | + | | FileInfo | Files[Count] | File information. | |
- | * '' | + | | - | Reserved | Reserved for future expansion. Ignore any additional bytes in the message. |
- | </ | + | |
+ | Where '' | ||
+ | ^ Type ^ Name ^ Description | ||
| [[gamedev: | | [[gamedev: | ||
| [[gamedev: | | [[gamedev: | ||
| [[gamedev: | | [[gamedev: | ||
- | | - | Reserved | Reserved for future expansion. Ignore any additional bytes in the message. | | ||
===== Request File Block Hashes ===== | ===== Request File Block Hashes ===== | ||
Line 78: | Line 79: | ||
===== Response File Block Hashes ===== | ===== Response File Block Hashes ===== | ||
- | Send by the client in response to a [[# | + | Send by the client in response to a [[# |
^ Type ^ Name ^ Description | ^ Type ^ Name ^ Description | ||
| [[gamedev: | | [[gamedev: | ||
| [[gamedev: | | [[gamedev: | ||
- | | [[gamedev: | + | | [[gamedev: |
- | * 1: Finish block hashes. | + | | BlockInfo |
- | * 2: No blocks. | + | |
- | </ | + | |
- | | [[gamedev: | + | |
- | | [[gamedev: | + | |
| - | Reserved | Reserved for future expansion. Ignore any additional bytes in the message. | | | - | Reserved | Reserved for future expansion. Ignore any additional bytes in the message. | | ||
+ | |||
+ | Where '' | ||
+ | ^ Type ^ Name ^ Description | ||
+ | | [[gamedev: | ||
===== Request Delete File ===== | ===== Request Delete File ===== | ||
Line 127: | Line 128: | ||
| - | Reserved | Reserved for future expansion. Ignore any additional bytes in the message. | | | - | Reserved | Reserved for future expansion. Ignore any additional bytes in the message. | | ||
- | The client has to mark the file as in progress for writing. If the file size is shorter than the existing file the file has to be truncated. File writing has to be done in overwrite mode hence the file content is retained. This allows updating only ranges of data inside large files. Data to write is send using unreliable | + | The client has to mark the file as in progress for writing. If the file size is shorter than the existing file the file has to be truncated. File writing has to be done in overwrite mode hence the file content is retained. This allows updating only ranges of data inside large files. Data to write is send using reliable |
Once ready the client has to send back a [[# | Once ready the client has to send back a [[# | ||
Line 146: | Line 147: | ||
===== Send File Data ===== | ===== Send File Data ===== | ||
- | Message send by the server to client with data to write to a file. For each part of the block a message is send. Parts are send in order from first to last. The message is send reliable and has this format: | + | Message send by the server to client with data to write to a file. For each block a message is send. Blocks |
^ Type ^ Name ^ Description | ^ Type ^ Name ^ Description | ||
Line 152: | Line 153: | ||
| [[gamedev: | | [[gamedev: | ||
| [[gamedev: | | [[gamedev: | ||
- | | [[gamedev: | + | | [[gamedev: |
- | | [[gamedev: | + | |
- | * 1: Finish block. | + | |
- | * 2: Batch finished. Used by server to know when it can send the next batch of parts to not saturate the client receive buffer. | + | |
- | </ | + | |
- | | [[gamedev: | + | |
Receiving and processing the message (successful or not) requires the client to send a [[# | Receiving and processing the message (successful or not) requires the client to send a [[# | ||
- | |||
- | Sending file data is split into multiple parts per block. This allows sending smaller messages without fragmentation for faster delivery. The default part size is 1357 (ConnectionPartSize). The actual offset to write the data too is then '' | ||
===== File Data Received ===== | ===== File Data Received ===== | ||
- | Send by the client after receiving a [[# | + | Send by the client after receiving a [[# |
^ Type ^ Name ^ Description | ^ Type ^ Name ^ Description | ||
Line 171: | Line 165: | ||
| [[gamedev: | | [[gamedev: | ||
| [[gamedev: | | [[gamedev: | ||
- | * '' | + | * '' |
* '' | * '' | ||
- | * '' | ||
Additional result codes can be added in the future to indicate better what has been the problem. Servers have to consider all values except '' | Additional result codes can be added in the future to indicate better what has been the problem. Servers have to consider all values except '' | ||
| - | Reserved | Reserved for future expansion. Ignore any additional bytes in the message. | | | - | Reserved | Reserved for future expansion. Ignore any additional bytes in the message. | | ||
Line 201: | Line 194: | ||
* '' | * '' | ||
* '' | * '' | ||
+ | * '' | ||
Additional result codes can be added in the future. Servers have to consider all values except '' | Additional result codes can be added in the future. Servers have to consider all values except '' | ||
| - | Reserved | Reserved for future expansion. Ignore any additional bytes in the message. | | | - | Reserved | Reserved for future expansion. Ignore any additional bytes in the message. | | ||
Line 241: | Line 235: | ||
| [[gamedev: | | [[gamedev: | ||
| [[gamedev: | | [[gamedev: | ||
+ | | - | Reserved | Reserved for future expansion. Ignore any additional bytes in the message. | | ||
+ | |||
+ | |||
+ | ===== Request System Property ===== | ||
+ | |||
+ | Send by the server to request information about the system the client is running on. The server indicates which property to query. The client has to return the requested property value if it is supported and the value can be determined. Otherwise the client has to return an empty response. The message is send reliable and has this format: | ||
+ | |||
+ | ^ Type ^ Name ^ Description | ||
+ | | [[gamedev: | ||
+ | | [[gamedev: | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | Additional property names can be added in the future. Applications can define custom property names. Clients have to return empty value for unknown properties.</ | ||
+ | | - | Reserved | Reserved for future expansion. Ignore any additional bytes in the message. | | ||
+ | |||
+ | The client sends back a [[# | ||
+ | |||
+ | ===== Response System Property ===== | ||
+ | |||
+ | Send by the client in response to a [[# | ||
+ | |||
+ | ^ Type ^ Name ^ Description | ||
+ | | [[gamedev: | ||
+ | | [[gamedev: | ||
+ | | [[gamedev: | ||
+ | The length and format of '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | Additional property names can be added in the future. Applications can define custom property names. Clients have to return empty value for unknown properties.</ | ||
+ | | - | Reserved | Reserved for future expansion. Ignore any additional bytes in the message. | | ||
+ | |||
+ | ===== Keep-Alive ===== | ||
+ | |||
+ | Send by the server and the client to verify the other side is still alive. This catches situations where the other side crashed or the network connection between the two sides ruptured. This messages requires no response since it is send reliable. Failure to receive it closes the connection. The message has this format: | ||
+ | |||
+ | ^ Type ^ Name ^ Description | ||
+ | | [[gamedev: | ||
| - | Reserved | Reserved for future expansion. Ignore any additional bytes in the message. | | | - | Reserved | Reserved for future expansion. Ignore any additional bytes in the message. | | ||