encode method
Encode frame to bytes
Implementation
Uint8List encode() {
if (payload.length > MAX_PAYLOAD_SIZE) {
throw ArgumentError('Payload too large: ${payload.length} > $MAX_PAYLOAD_SIZE');
}
final buffer = ByteData(HEADER_SIZE + payload.length);
int offset = 0;
// Magic (4 bytes)
buffer.setUint32(offset, MAGIC, Endian.big);
offset += 4;
// Version (1 byte)
buffer.setUint8(offset, version);
offset += 1;
// Type (1 byte)
buffer.setUint8(offset, type.value);
offset += 1;
// Flags (1 byte)
buffer.setUint8(offset, flags.value);
offset += 1;
// Reserved (1 byte)
buffer.setUint8(offset, 0);
offset += 1;
// Length (4 bytes)
buffer.setUint32(offset, payload.length, Endian.big);
offset += 4;
// Stream ID (4 bytes)
buffer.setUint32(offset, streamId, Endian.big);
offset += 4;
// Copy payload
final result = buffer.buffer.asUint8List();
result.setRange(HEADER_SIZE, HEADER_SIZE + payload.length, payload);
return result;
}