summaryrefslogtreecommitdiff
path: root/src/fs_service.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/fs_service.zig')
-rw-r--r--src/fs_service.zig11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/fs_service.zig b/src/fs_service.zig
index 7821e850..b440c2c2 100644
--- a/src/fs_service.zig
+++ b/src/fs_service.zig
@@ -43,10 +43,13 @@ const max_batch = 64;
/// listener beside the mount a matter of writing one more implementation
/// rather than of teaching this file about it.
///
-/// It is deliberately NOT a Zig interface with `anytype`: the two callers
-/// (tty.zig and gui.zig) store the transport in a struct field across frames,
-/// so it has to be a value with a runtime type, which is a vtable — the same
-/// shape and the same reasoning as `host.VTable`.
+/// It is deliberately NOT a Zig interface with `anytype`: `drain` is ONE
+/// function reached from four call sites (tty.zig, gui.zig twice, and the
+/// daemon), and the second transport this seam exists for is chosen at RUN
+/// time, so it has to be a value with a runtime type — which is a vtable, the
+/// same shape and the same reasoning as `host.VTable`. Nothing holds a
+/// `Transport` across a frame: every caller builds one inline from whatever it
+/// has, which is why the thunks matter and the struct does not.
///
/// The ORDER contract stays where it was, in `drain`, because it belongs to
/// the caller rather than to any implementor: `retry()` to null first, then