TmuxEngine
What runs a tmux command for a server.
Source and package
- Qualified name
-
TmuxEngine - Module
- engine
- Package
- libtmux
- Source
- packages/libtmux/src/engine.ts
- type engine.TmuxEngine = { readonly endpoint?: string; execute(request: Tmux
Invocation ): Promise<TmuxRequest Command >; }Result -
Description#
Two obligations beyond returning bytes, and both are what the layers above assume rather than check:
Every request is one tmux invocation and carries its ordered command list. Keeping that structure at the seam prevents an engine from splitting a snapshot into several clients or guessing where global flags end. Environment, stdin, signal, and timeout apply once to the whole invocation.
The library reads the daemon's version through the engine before the first command, with a
run-shell -Crequest whose stderr names the answer, and starts each list with anif-shell -Ffence that stops the list on a daemon of another release. An engine runs both as it runs any command; a request's stdin belongs to the command after the fence.daemonGuard, when a request carries one, must reach tmux — or the engine must be bound to one daemon for its lifetime, the way a control connection is. Ignoring it on a reconnecting engine means a handle read before a restart addressing whatever now holds its id.guardRequestis what the built-in engine calls to honour it, published so an implementer does not reproduce the wrapper, its else branch, and the stderr that tells refusal from failure.