xo-umbrella2/xo-reactor2websock
2026-10-04 10:58:51 -04:00
..
cmake xo-reactor2websock: + REactorWebSocketSink [REFACTOR] 2026-09-26 13:46:22 -04:00
include/xo/reactor2websock xo-reactor2websock: + REactorWebSocketSink [REFACTOR] 2026-09-26 13:46:22 -04:00
src/reactor2websock xo-websock: refactor to admit http response 2026-09-27 23:16:39 -04:00
utest xo-websock: reflect+printjson for WebserverConfig [FEATURE] 2026-10-04 10:58:51 -04:00
CMakeLists.txt xo-reactor2websock: + REactorWebSocketSink [REFACTOR] 2026-09-26 13:46:22 -04:00
README.md xo-reactor2websock: + REactorWebSocketSink [REFACTOR] 2026-09-26 13:46:22 -04:00

xo-reactor2websock

Adapter between xo-reactor (typed event sources and sinks) and xo-websock (websocket transport). Read the name as reactor-to-websock; it is not about xo-reactor2.

It exists so that neither of those depends on the other:

  • xo-websock carries frames. It speaks only TaggedPtr, and renders with PrintJson.
  • xo-reactor no longer knows the web exists.

Provides:

  • xo::web::ReactorWebsocketSink: a reactor::AbstractSink that forwards every event to a web::WebsocketSink.
  • xo::web::stream_endpoint_descr(src, prefix): a websocket stream endpoint for a reactor source.
  • xo::web::http_endpoint_descr(store, pjson, prefix): an http snapshot endpoint (prefix + "/snap") for a reactor event store.

Both endpoint builders hold their subject by rp<>. Until 2026-09-26 they were member functions of xo-reactor classes, and those captured a raw this.

Python bindings: xo-pyreactor2websock.

See .xo-backlog/xo-websock/issues/02.