feat(sandokan-remote): B1.4 — RemoteEngine vía SSH socket-forward
Opción B: RemoteEngine orquesta en un host remoto tunelando el wire
del daemon sobre un canal SSH direct-streamlocal hacia el sandokan.sock
remoto. El protocolo es idéntico al de DaemonEngine (postcard
length-prefixed) — sólo cambia el transporte, así que read_frame/
write_frame se reusan tal cual.
- brahman-ssh-multiplex: + SshSession::forward_unix — abre un canal
direct-streamlocal y devuelve su ChannelStream (AsyncRead+AsyncWrite).
- sandokan-daemon: protocol ahora pub, exporta read_frame/write_frame.
- sandokan-remote: RemoteEngine { SshSession + remote_socket }.
connect() o with_session(); cada operación abre un canal nuevo
(multiplexado sobre la conexión maestra).
- sandokan umbrella re-exporta RemoteEngine.
Completa Fase B: sandokan tiene Local + Daemon + Remote + auto().
cargo check --workspace verde. RemoteEngine necesita un host remoto
con `sandokan daemon` para validación runtime (sin unit test).
Opción A (text-parse del CLI por compat) queda pendiente por decisión
del usuario.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -12,6 +12,7 @@ sandokan-core = { path = "../sandokan-core" }
|
||||
sandokan-lifecycle = { path = "../sandokan-lifecycle" }
|
||||
sandokan-local = { path = "../sandokan-local" }
|
||||
sandokan-daemon = { path = "../sandokan-daemon" }
|
||||
sandokan-remote = { path = "../sandokan-remote" }
|
||||
tokio = { workspace = true }
|
||||
|
||||
[dev-dependencies]
|
||||
|
||||
@@ -17,6 +17,7 @@ pub use sandokan_core::{
|
||||
};
|
||||
pub use sandokan_daemon::{serve, DaemonEngine, DaemonRequest, DaemonResponse};
|
||||
pub use sandokan_local::LocalEngine;
|
||||
pub use sandokan_remote::RemoteEngine;
|
||||
|
||||
/// Re-export de las primitivas de lifecycle.
|
||||
pub use sandokan_lifecycle as lifecycle;
|
||||
|
||||
Reference in New Issue
Block a user