From d62ba807559ccc66cd19a870f1e396358181e3f1 Mon Sep 17 00:00:00 2001 From: Alexander Date: Wed, 24 Jun 2026 12:37:09 +0300 Subject: [PATCH] =?UTF-8?q?refactor(ipc):=20connect()=20=D0=B2=20ipc::conn?= =?UTF-8?q?;=20sdk=20=D1=80=D0=B5-=D1=8D=D0=BA=D1=81=D0=BF=D0=BE=D1=80?= =?UTF-8?q?=D1=82=D0=B8=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Сервисам нужен bus-bootstrap, а от sdk они не зависят (граница architecture §3). Co-Authored-By: Claude Opus 4.8 Signed-off-by: Alexander --- crates/shturman-ipc/src/conn.rs | 12 ++++++++++++ crates/shturman-ipc/src/lib.rs | 2 ++ crates/shturman-sdk/src/connect.rs | 12 ++---------- 3 files changed, 16 insertions(+), 10 deletions(-) create mode 100644 crates/shturman-ipc/src/conn.rs 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;