fromBytes static method

Frame fromBytes(
  1. ByteData view,
  2. int offset
)

A factory constructor to deserialize a frame from bytes.

Implementation

static Frame fromBytes(ByteData view, int offset) {
  final type = view.getUint8(offset);
  if (type >= FrameType.values.length) {
    throw ArgumentError('Unknown frame type: $type');
  }
  switch (FrameType.values[type]) {
    case FrameType.padding:
      return PaddingFrame.fromBytes(view, offset);
    case FrameType.ping:
      return PingFrame.fromBytes(view, offset);
    case FrameType.ack:
      return AckFrame.fromBytes(view, offset);
    case FrameType.stream:
      return StreamFrame.fromBytes(view, offset);
    case FrameType.windowUpdate:
      return WindowUpdateFrame.fromBytes(view, offset);
    case FrameType.maxData:
      return MaxDataFrame.fromBytes(view, offset);
    case FrameType.resetStream:
      return ResetStreamFrame.fromBytes(view, offset);
    case FrameType.maxStreams:
      return MaxStreamsFrame.fromBytes(view, offset);
    case FrameType.mtuProbe:
      return MtuProbeFrame.fromBytes(view, offset);
    case FrameType.pathChallenge:
      return PathChallengeFrame.fromBytes(view, offset);
    case FrameType.pathResponse:
      return PathResponseFrame.fromBytes(view, offset);
    case FrameType.connectionClose:
      return ConnectionCloseFrame.fromBytes(view, offset);
    case FrameType.stopSending:
      return StopSendingFrame.fromBytes(view, offset);
    case FrameType.dataBlocked:
      return DataBlockedFrame.fromBytes(view, offset);
    case FrameType.streamDataBlocked:
      return StreamDataBlockedFrame.fromBytes(view, offset);
    case FrameType.newConnectionId:
      return NewConnectionIdFrame.fromBytes(view, offset);
    case FrameType.retireConnectionId:
      return RetireConnectionIdFrame.fromBytes(view, offset);
  }
}