BlockOnce now takes a value-reader and a signal source. The framework handles the blocking loop: read → compare hash to base → if different return → else wait on signal or timeout. On timeout (ctx.Done), returns empty (not error) so clients re-open cleanly. BlockOnceRaw retained for queue-style handlers (bypass/pending, proc/wait) that manage their own blocking. EventValue adapter wraps a <-chan Event into BlockOnce-compatible (readFn, signalFn) pair via a thin goroutine. |
||
|---|---|---|
| .. | ||
| parse.go | ||
| proc.go | ||
| proc_test.go | ||
| server.go | ||
| state_test.go | ||