diff --git a/standards/application/reliable-channel-api.md b/standards/application/reliable-channel-api.md index ff126ac..06ca43f 100644 --- a/standards/application/reliable-channel-api.md +++ b/standards/application/reliable-channel-api.md @@ -105,28 +105,6 @@ This API considers the types defined by [MESSAGING-API](/standards/application/m ```yaml types: - MessageChunk: - type: object - description: "Represents the minimum unit of data transmitted across the network. Its size is governed by SegmentationConfig. Chunks are chained to their predecessors, and any chunk whose linkage to its predecessor cannot be verified MUST be discarded. - Only the first chunk on every message, is rate-limited (RLN) and the subsequent chunks MUST be accepted rate-limit wise." - fields: - chunkId: - type: string - description: UUID for the chunk - previousChunkId: - type: string - description: Previous chunk ID. Chunks with unvalidated previous chunks MUST be rejected. - This field is empty when chunkIndex == 0. - chunkIndex: - type: uint - description: "Zero-based position of this chunk within the ordered sequence of chunks that form the original message." - lastChunkIndex: - type: uint - description: "All chunks of same message have the same value, i.e., num-chunks - 1." - requestId: - type: RequestId - description: "The request id this chunk belongs to. This is generated by the send function. `RequestId` is defined in [MESSAGING-API](./messaging-api.md)." - SyncStatusDetail: type: object description: "Provides a snapshot of the channel's synchronisation state." @@ -220,7 +198,7 @@ types: fields: segmentationConfig: type: SegmentationConfig - description: "Configuration for message segmentation. Please refer to [SEGMENTATION](./segmentation.md) for more details." + description: "Configuration for message segmentation. Refer to [SEGMENTATION-API](./segmentation-api.md) for details." sdsConfig: type: SdsConfig description: "Configuration for Scalable Data Sync." @@ -233,15 +211,6 @@ types: default: none description: "Optional pluggable encryption implementation. If none, messages are sent unencrypted." - SegmentationConfig: - type: object - fields: - chunkSizeBytes: - type: uint - default: 102400 # 100 KiB - description: "Maximum chunk size in bytes. - Messages larger than this value are split before SDS processing." - SdsConfig: type: object fields: @@ -425,7 +394,7 @@ functions: When `send` is called, the implementation MUST process the message in the following order: -1. **Segment**: Split the payload into chunks of at most `chunkSizeBytes` as defined in `SegmentationConfig`. +1. **Segment**: Split the payload into chunks as defined in [SEGMENTATION-API](./segmentation-api.md). 2. **Apply SDS**: Register each chunk with the SDS layer to track acknowledgements and enable retransmission. 3. **Encrypt**: If an `IEncryption` implementation is provided, encrypt each chunk before transmission. 4. **Dispatch**: Send each chunk via the underlying [MESSAGING-API](/standards/application/messaging-api.md). @@ -454,15 +423,7 @@ Chunks MUST NOT be sent at a rate that would violate the RLN message rate limit ### Segmentation -Segmentation splits outgoing messages into chunks before SDS processing. -This ensures each chunk fits within the network's maximum message size. - -- The default chunk size is `100 KiB` (`102400 bytes`.) -- Chunks MUST be tagged with metadata sufficient for the receiver to reassemble the original message: - a message identifier, chunk index, and total chunk count. -- Segmentation MUST be transparent to the SDS layer; SDS operates on individual chunks. -- The maximum allowed message size is `1MiB` (`1048576 bytes`.) -- Messages that are bigger than the maximum allowed size will be discarded automatically and an error will be given to the caller. +See [SEGMENTATION-API](./segmentation-api.md). ### Scalable Data Sync (SDS)