LibTmux.Control
Source and package
- Qualified name
-
LibTmux:: Control - Declared in
LibTmux- Package
- LibTmux
- Source
- lib/LibTmux/Control.rakumod
-
Description#
Control framing and delivery
Decoder frames bytes on LF and correlates all three numeric guard fields. Notification-shaped lines within a response remain payload. PaneOutput keeps octal-decoded bytes, including NUL and incomplete UTF-8; text decoding belongs to a separate incremental consumer. UnknownEvent preserves future notifications.
The tmux wire protocol does not escape arbitrary command payloads from matching their own terminal guard. Managed reads must use declared, prefixed projections; raw command output cannot promise lossless framing for guard-shaped payloads. A Response acknowledges dispatch. Its end guard does not establish completion of a launched job, popup, detach, or other asynchronous effect. Some queued jobs print outside response blocks. UnframedOutput preserves such lines, but the protocol cannot distinguish arbitrary job text from notifications.
Event delivery is live, without replay. A late tap misses earlier events. Each subscriber has an independently bounded queue and serial worker. A slow subscriber overflows explicitly; a throwing callback terminates only its own subscription. Closing a tap discards queued values. Owner completion drains already accepted values before done; failure drains before quit. User callbacks already executing cannot be cancelled, and owner teardown does not wait for them.
Members7#
- Connection class
- Decoder class Incremental LF framing with exact response guards and bounded retained data.
- Event class One notification, retaining its original bytes without the record terminator.
- PaneOutput class Pane output is terminal bytes, not an independently decodable UTF-8 string.
- Response class A matched command guard pair acknowledges execution, not asynchronous effects.
- UnframedOutput class Some queued jobs print after their end guard; preserve that unframed line.
- UnknownEvent class An unrecognized notification remains inspectable without interpreting its body.