PacketHeader.fromBytes constructor

PacketHeader.fromBytes(
  1. Uint8List datagram
)

Implementation

factory PacketHeader.fromBytes(Uint8List datagram) {
  final messageType = datagram[1];

  // Validate the message type.
  if (messageType > PacketType.values.length) {
    throw const FormatException('Packet type is wrong!');
  }

  // Get the issuedAt and id from the datagram.
  final buffer = datagram.buffer.asInt64List(0, 2);

  // Create and return a new PacketHeader instance.
  return PacketHeader(
    forwardsCount: datagram[0],
    messageType: PacketType.values[messageType],
    issuedAt: buffer[0] >> 16,
    id: buffer[1],
  );
}