decodePacket method

int decodePacket(
  1. Packet packet,
  2. Uint8List buffer,
  3. int offset
)

Implementation

int decodePacket(Packet packet, Uint8List buffer, int offset) {
  final schema = packet.schema;
  var bitmask = packet.bitMask = extractInt(buffer, offset, schema.bytesPerMask);
  offset += schema.bytesPerMask;
  final bytesPerBoolMask = schema.bytesPerBoolMask;
  if (bytesPerBoolMask > 0) {
    packet.boolMask = extractInt(buffer, offset, bytesPerBoolMask);
    offset += bytesPerBoolMask;
  }
  var idx = 1;
  final propertiesCount = schema.maxProperties;
  var intCount = schema.intCount;
  for (var id = 0; id < intCount; id++) {
    if (boolFromMask(bitmask, propertiesCount, idx)) {
      var numSize = getSizeFromId(id, schema);
      packet.putUInt(id, extractInt(buffer, offset, numSize));
      offset += numSize;
    }
    idx++;
  }
  for (var id = 0; id < schema.stringsCount; id++) {
    if (boolFromMask(bitmask, propertiesCount, idx)) {
      var length = extractInt(buffer, offset++, 1);
      packet.putString(id, extractString(buffer, offset, length));
      offset += length;
    }
    idx++;
  }
  if (schema.includedBytes) {
    if (boolFromMask(bitmask, propertiesCount, idx)) {
      var length = extractInt(buffer, offset, 2);
      offset += 2;
      packet.payloadBytes = extractUint8List(buffer, offset, length);
      offset += length;
    }
    idx++;
  }
  return offset;
}