encodeFrame static method

Uint8List encodeFrame(
  1. int frameType,
  2. int streamId,
  3. List<int> payload
)

Build one DataChannel message: header + payload.

Implementation

static Uint8List encodeFrame(int frameType, int streamId, List<int> payload) {
  if (!Wire.isFrameType(frameType)) {
    throw StatusException(
        Wire.codeInvalidArgument, 'unknown frame type $frameType');
  }
  if (frameType == Wire.frameData && payload.length > maxDataPayload) {
    throw StatusException(
        Wire.codeResourceExhausted, 'DATA payload exceeds 16 MiB');
  }
  final out = Uint8List(headerLen + payload.length);
  out[0] = frameType;
  putU32(out, 1, streamId);
  putU32(out, 5, payload.length);
  out.setRange(headerLen, out.length, payload);
  return out;
}