stream property

Stream<Query> get stream

A stream of Querys received by this queryable.

⚠️ UNBOUNDED, and pausing it does not stop the flow. Queries are pushed in as they arrive, and each one holds a z_owned_query_t clone open until disposed — so a slow consumer here grows native memory as well as the Dart queue. Measured: a paused push queryable retained all 64 queries fired at it, against 9 for Session.declarePullQueryable(…, capacity: 8).stream. ⚠️ A value this binding cannot convert arrives as a STREAM ERROR, never as empty or absent data. Zenoh can hand over a payload or attachment the conversion step refuses; delivering that as a zero-length value would be indistinguishable from a legitimately empty one, and empty is a real value on this path. The error carries canon's own code.

The stream keeps running. A conversion failure is a failed call, not a dead channel — the same rule the pull family already ships — so later values still arrive and terminating on the first bad one would lose them. ⚠️ But an unhandled stream error is still an unhandled error: pass onError (or handleError), because an unhandled one can take the program down.

Implementation

Stream<Query> get stream => _channel.stream;