pub struct Payload {
pub metadata: BytesMut,
pub data: BytesMut,
/* private fields */
}Expand description
PAYLOAD Frame (0x0A)
§Frame Contents
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Stream ID |
+-----------+-+-+-+-+-+---------+-------------------------------+
|Frame Type |0|M|F|C|N| Flags |
+-------------------------------+-------------------------------+
Metadata & Data§Valid combinations of (C)omplete and (N)ext flags are:
-
Both (C)omplete and (N)ext set meaning PAYLOAD contains data and signals stream completion. For example: An Observable stream receiving onNext(payload) followed by onComplete().
-
Just (C)omplete set meaning PAYLOAD contains no data and only signals stream completion. For example: An Observable stream receiving onComplete().
-
Just (N)ext set meaning PAYLOAD contains data stream is NOT completed. For example: An Observable stream receiving onNext(payload).
A PAYLOAD MUST NOT have both (C)complete and (N)ext empty (false).
The reason for the (N)ext flag instead of just deriving from Data length being > 0 is that 0 length data can be considered a valid PAYLOAD resulting in a delivery to the application layer with a PAYLOAD containing 0 bytes of data.
For example: An Observable stream receiving data via onNext(payload) where payload contains 0 bytes of data.
Fields§
§metadata: BytesMutPayload Metadata
data: BytesMutPayload Data