docan_rs/server/
mod.rs

1mod context;
2mod server_impl;
3mod session;
4mod util;
5
6pub use server_impl::*;
7
8use crate::SecurityAlgo;
9use iso14229_1::{response::SessionTiming, DidConfig, utils::did_config_deserialize};
10use iso15765_2::Address;
11use rsutil::types::ByteOrder;
12use serde::Deserialize;
13
14#[derive(Debug, Clone, Deserialize)]
15pub struct Config {
16    pub(crate) address: Address,
17    pub(crate) timing: SessionTiming,
18    /// extend session security access level
19    pub(crate) extend_sa_level: u8,
20    /// program session security access level
21    pub(crate) program_sa_level: u8,
22    pub(crate) sa_salt: Vec<u8>,
23    #[serde(deserialize_with = "did_config_deserialize")]
24    pub(crate) did_cfg: DidConfig,
25    pub(crate) byte_order: ByteOrder,
26}
27
28#[async_trait::async_trait]
29pub trait Server {
30    async fn update_address(&self, address: Address);
31    async fn update_security_algo(&self, algo: SecurityAlgo);
32    async fn service_forever(&mut self, interval: u64);
33
34    async fn service_stop(&mut self);
35}