| 33 | // ── DaemonIO ──────────────────────────────────────────────────────────── |
| 34 | |
| 35 | void DaemonIO::emit(int32_t v) const { |
| 36 | // Call the token callback for non-sentinel tokens. |
| 37 | if (on_token && v >= 0) { |
| 38 | if (!on_token(v)) { |
| 39 | cancelled = true; |
| 40 | return; |
| 41 | } |
| 42 | } |
| 43 | |
| 44 | if (stream_fd < 0) return; |
| 45 | #ifndef _WIN32 |
| 46 | ssize_t n = ::write(stream_fd, &v, sizeof(v)); |
| 47 | (void)n; |
| 48 | #else |
| 49 | _write(stream_fd, &v, sizeof(v)); |
| 50 | #endif |
| 51 | } |
| 52 | |
| 53 | DaemonIO DaemonIO::with_token_callback(const TokenCallback & cb) const { |
| 54 | DaemonIO out = *this; |