1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
use async_trait::async_trait;
use futures::future::BoxFuture;
use serde::{Deserialize, Serialize};
use uuid::Uuid;
use crate::{accessory::HapAccessory, pointer, Result};
mod ip;
pub use ip::IpServer;
#[async_trait]
pub trait Server {
fn run_handle(&self) -> BoxFuture<()>;
fn config_pointer(&self) -> pointer::Config;
fn storage_pointer(&self) -> pointer::Storage;
async fn add_accessory<A: HapAccessory + 'static>(&self, accessory: A) -> Result<pointer::Accessory>;
async fn remove_accessory(&self, accessory: &pointer::Accessory) -> Result<()>;
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct ServerPersistence {
pub added_accessory_ids: Vec<Uuid>,
}