decodeSelf method

  1. @override
void decodeSelf(
  1. RawReader reader
)

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);
}