YamuxFrame.fromBytes constructor
YamuxFrame.fromBytes(
- Uint8List bytes
Creates a frame from bytes
Implementation
factory YamuxFrame.fromBytes(Uint8List bytes) {
if (bytes.length < 12) {
throw FormatException('Frame too short');
}
final header = ByteData.view(bytes.buffer, bytes.offsetInBytes, 12);
// Version must be 0
final version = header.getUint8(0);
if (version != YamuxFrame.version) {
throw FormatException('Invalid version: $version');
}
// Parse type
final type = YamuxFrameType.fromValue(header.getUint8(1));
// Parse flags
final flags = header.getUint16(2, Endian.big);
// Parse stream ID
final streamId = header.getUint32(4, Endian.big);
// Parse length
final length = header.getUint32(8, Endian.big);
// Get data
final data = bytes.length > 12 ? bytes.sublist(12) : Uint8List(0);
if (data.length != length) {
throw FormatException('Frame data length mismatch');
}
return YamuxFrame(
type: type,
flags: flags,
streamId: streamId,
length: length,
data: data,
);
}