parsePayload static method

OriginFrame parsePayload(
  1. Uint8List payload
)

Parse payload.

Implementation

static OriginFrame parsePayload(Uint8List payload) {
  final parsedOrigins = <String>[];
  var offset = 0;

  while (offset < payload.length) {
    if (offset + 2 > payload.length) {
      throw ArgumentError(
        'ORIGIN payload too short for Origin-Len at offset $offset',
      );
    }
    final length = (payload[offset] << 8) | payload[offset + 1];
    offset += 2;

    if (offset + length > payload.length) {
      throw ArgumentError(
        'ORIGIN payload too short: expected $length bytes at offset $offset',
      );
    }

    final originBytes = payload.sublist(offset, offset + length);
    parsedOrigins.add(utf8.decode(originBytes));
    offset += length;
  }

  return OriginFrame(origins: parsedOrigins);
}