feat(sandokan-daemon): B1.3 — DaemonEngine + protocolo wire
DaemonEngine: implementación del trait Engine que delega a otro proceso vía Unix socket. Materializa el patrón horizontal de sandokan (el binario que arranca primero expone el engine; los demás se le suman). - protocol.rs — DaemonRequest/DaemonResponse (espejan los métodos de Engine) + framing postcard length-prefixed (u32 LE + bytes), con MAX_FRAME 16 MiB defensivo. - client.rs — DaemonEngine: stateless, un round-trip por llamada; is_reachable() para el probe de auto(). - server.rs — serve(engine, socket): envuelve cualquier Engine, una task por conexión, multi-request por conexión. EngineError ahora es Serialize/Deserialize (viaja por el wire); NotFound se propaga tipado a través del socket. 1 test de integración: roundtrip real DaemonEngine ↔ serve ↔ LocalEngine (list vacío + NotFound propagado). cargo check --workspace verde. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
//! sandokan-daemon — `DaemonEngine` + loop servidor.
|
||||
//!
|
||||
//! Permite que el orquestador corra en un proceso y otros lo consuman
|
||||
//! sin reimplementar la lógica: el `DaemonEngine` (cliente) implementa
|
||||
//! el trait [`sandokan_core::Engine`] enviando requests postcard
|
||||
//! length-prefixed sobre un Unix socket; [`serve`] corre el lado
|
||||
//! servidor envolviendo cualquier `Engine` (típicamente un `LocalEngine`).
|
||||
//!
|
||||
//! Es la pieza que materializa el patrón horizontal de sandokan: el
|
||||
//! primer binario que arranca gana el socket y expone el engine; los
|
||||
//! demás se le suman como `DaemonEngine`.
|
||||
|
||||
mod client;
|
||||
mod protocol;
|
||||
mod server;
|
||||
|
||||
pub use client::DaemonEngine;
|
||||
pub use protocol::{DaemonRequest, DaemonResponse};
|
||||
pub use server::serve;
|
||||
Reference in New Issue
Block a user