Binary framing for data-stream samples.
Data streams are the latency-critical path, and their shape is already fixed and known to both ends from the negotiated DataStreamConfig — so nothing per-sample needs describing and JSON would be pure overhead. An 8-channel float64 sample is 78 bytes here versus 200+ as JSON, and the receiver can read the payload as a typed list without parsing.
Layout (little-endian):
0 uint8 frame kind (always kindSample)
1 uint8 StreamDataType.index
2..3 uint16 streamSlot negotiated per stream; no name per sample
4..5 uint16 srcSlot REWRITTEN BY THE HUB on relay
6..13 float64 senderMicros sender's clock, mirrors lsl_timestamp
14.. payload channels x sizeof(dtype)
(string: uint32 length + utf8, per channel)
The hub never parses the payload: it overwrites two bytes at offset 4 and forwards the same buffer to every subscriber. That is what keeps relay cost near zero and is the whole justification for a dumb hub.
Properties
- hashCode → int
-
The hash code for this object.
no setterinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
Methods
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited
Static Methods
-
dataTypeOf(
Uint8List frame) → StreamDataType -
decodeChannels(
Uint8List frame, int channelCount) → List< Object?> - Reads the channel values back out.
-
encode(
{required StreamDataType dataType, required int streamSlot, required int srcSlot, required double senderMicros, required List< Object?> channels}) → Uint8List -
isSample(
Uint8List bytes) → bool -
Whether
byteslooks like a sample frame rather than control text. -
rewriteSourceSlot(
Uint8List frame, int srcSlot) → void - Rewrites the source slot in place, without copying or parsing.
-
senderMicrosOf(
Uint8List frame) → double -
sourceSlotOf(
Uint8List frame) → int -
streamSlotOf(
Uint8List frame) → int
Constants
- headerBytes → const int
- kindSample → const int