decodeSelf method
Decodes the current object from the given RawReader.
Implementation
@override
void decodeSelf(RawReader reader) {
// 4-byte span at index 0
_v0 = reader.readUint32();
// 4-byte span at index 4
sequenceNumber = reader.readUint32();
// 4-byte span at index 8
acknowledgementNumber = reader.readUint32();
// 4-byte span at index 12
_v3 = reader.readUint32();
// 4-byte span at index 16
_v4 = reader.readUint32();
// Options
// Length is determined by header length field
final headerLength = 4 * (_v3 >> 28);
if (headerLength < 20) {
throw StateError('header length field has invalid value $headerLength');
}
final optionsLength = headerLength - 20;
optionsByteData = _compressOptions(
reader.readByteDataViewOrCopy(optionsLength),
);
// Payload
// Length is not determined by the header
final payloadLength = reader.availableLengthInBytes;
payload = RawData.decode(reader, payloadLength);
}