2b06ff749f
- SettingValue{Str,Int,Bool} в сторе: провод-variant теперь честно поддержан (не string-only).
- битый settings.json → WARN в лог (не молча) + откат к дефолтам.
- отказ записи /data → Error::Failed (не InvalidArgument).
- reset ключа без дефолта → no-op + InvalidArgument (без ложного Changed("")).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Alexander <akotenev2003@gmail.com>
24 lines
1.2 KiB
Rust
24 lines
1.2 KiB
Rust
//! Контракт ошибок шины — `ru.shturman.Error.*` (ipc §2).
|
||
|
||
/// D-Bus-ошибки Штурмана. Маппинг в `ru.shturman.Error.<Variant>` — через `zbus::DBusError`.
|
||
/// В v0 реально используется `InvalidArgument` (Settings); остальные — зарезервированы по мере сервисов.
|
||
#[derive(Debug, zbus::DBusError)]
|
||
#[zbus(prefix = "ru.shturman.Error")]
|
||
pub enum Error {
|
||
/// Транспортные ошибки zbus (catch-all).
|
||
#[zbus(error)]
|
||
ZBus(zbus::Error),
|
||
PermissionDenied(String),
|
||
/// PID/сигнал не поддержан машиной (постоянно).
|
||
NotAvailable(String),
|
||
/// Транзиентно: устарело / двигатель заглушен / таймаут.
|
||
Stale(String),
|
||
Timeout(String),
|
||
ReadOnly(String),
|
||
InvalidArgument(String),
|
||
Unsupported(String),
|
||
/// Внутренний сбой сервиса (напр. отказ записи в `/data`) — НЕ путать с `InvalidArgument`
|
||
/// (плохой ввод клиента). Аддитивно к набору ipc §2 (синхронизировать ipc.md при реализации).
|
||
Failed(String),
|
||
}
|