diff --git a/crates/shturman-ipc/src/conn.rs b/crates/shturman-ipc/src/conn.rs new file mode 100644 index 0000000..97d222a --- /dev/null +++ b/crates/shturman-ipc/src/conn.rs @@ -0,0 +1,12 @@ +//! Бутстрап D-Bus-соединения (ipc §1). Прод/VM — **системная шина устройства**; +//! dev/тесты — сессионная (env `SHTURMAN_BUS=session`). Используется и сервисами, и `sdk`. + +use zbus::Connection; + +/// По умолчанию — системная шина; `SHTURMAN_BUS=session` → сессионная (герметичные тесты/dev, План 3/5). +pub async fn connect() -> zbus::Result { + match std::env::var("SHTURMAN_BUS").as_deref() { + Ok("session") => Connection::session().await, + _ => Connection::system().await, + } +} diff --git a/crates/shturman-ipc/src/lib.rs b/crates/shturman-ipc/src/lib.rs index 2c8243f..3f93da3 100644 --- a/crates/shturman-ipc/src/lib.rs +++ b/crates/shturman-ipc/src/lib.rs @@ -2,11 +2,13 @@ //! Источник правды по шине (ipc.md). `sdk` и сервисы используют его по разные стороны границы //! (architecture §3): сервисы реализуют `#[interface]`, клиенты берут `#[proxy]`. +pub mod conn; pub mod error; pub mod names; pub mod proxy; pub mod types; +pub use conn::connect; pub use error::Error; pub use proxy::{Power1Proxy, Settings1Proxy}; pub use types::{IgnitionState, PowerSource, PowerState, ShutdownReason}; diff --git a/crates/shturman-sdk/src/connect.rs b/crates/shturman-sdk/src/connect.rs index 1dc0c65..8a81d4e 100644 --- a/crates/shturman-sdk/src/connect.rs +++ b/crates/shturman-sdk/src/connect.rs @@ -1,13 +1,5 @@ //! Бутстрап D-Bus-соединения. Прод/VM — **системная шина устройства** (ipc §1); //! dev/тесты — сессионная (env `SHTURMAN_BUS=session`, см. План 3). -use zbus::Connection; - -/// Подключиться к шине Штурмана. -/// По умолчанию — системная; `SHTURMAN_BUS=session` → сессионная (герметичные тесты/dev). -pub async fn connect() -> zbus::Result { - match std::env::var("SHTURMAN_BUS").as_deref() { - Ok("session") => Connection::session().await, - _ => Connection::system().await, - } -} +// connect() переехал в ipc::conn (нужен и сервисам, и sdk). Здесь — ре-экспорт для стабильного API sdk. +pub use shturman_ipc::connect;