deserialize static method

RtcData deserialize(
  1. Uint8List bytes
)

从字节数组反序列化

Implementation

static RtcData deserialize(Uint8List bytes) {
  if (bytes.length < HEADER_SIZE) {
    throw ArgumentError('字节数组长度不足');
  }

  final buffer = ByteData.sublistView(bytes);
  int offset = 0;

  // 读取magic
  final magic = buffer.getInt32(offset, Endian.big);
  offset += 4;

  // 读取version
  final version = buffer.getInt16(offset, Endian.big);
  offset += 2;

  // 读取size
  final size = buffer.getInt16(offset, Endian.big);
  offset += 2;

  // 读取cmdType
  final cmdType = buffer.getInt32(offset, Endian.big);
  offset += 4;

  // 读取reserved
  final reserved = Uint8List(20);
  for (int i = 0; i < 20; i++) {
    reserved[i] = buffer.getUint8(offset + i);
  }
  offset += 20;

  // 读取data
  final dataLength = bytes.length - HEADER_SIZE;
  final data = Uint8List(dataLength);
  data.setRange(0, dataLength, bytes, offset);

  return RtcData._internal(
    magic: magic,
    version: version,
    size: size,
    cmdType: cmdType,
    reserved: reserved,
    data: data,
  );
}