atm0s_sdn/
lib.rs

1#![allow(clippy::bool_assert_comparison)]
2
3use std::{fmt::Debug, hash::Hash};
4
5pub use atm0s_sdn_identity::{ConnDirection, ConnId, NodeAddr, NodeAddrBuilder, NodeId, NodeIdType, Protocol};
6pub use atm0s_sdn_network::controller_plane::ControllerPlaneCfg;
7pub use atm0s_sdn_network::data_plane::DataPlaneCfg;
8use atm0s_sdn_network::features::FeaturesControl;
9pub use atm0s_sdn_network::{
10    base, features, secure, services,
11    worker::{SdnWorker, SdnWorkerBusEvent, SdnWorkerCfg, SdnWorkerInput, SdnWorkerOutput},
12};
13pub use atm0s_sdn_network::{
14    base::ServiceId,
15    data_plane::{NetInput, NetOutput},
16};
17pub use atm0s_sdn_router::{shadow::ShadowRouterHistory, RouteRule, ServiceBroadcastLevel};
18pub use sans_io_runtime;
19
20mod builder;
21mod history;
22mod time;
23mod worker_inner;
24
25pub use builder::{generate_node_addr, SdnBuilder};
26pub use history::DataWorkerHistory;
27pub use time::{TimePivot, TimeTicker};
28pub use worker_inner::{SdnChannel, SdnController, SdnEvent, SdnExtIn, SdnExtOut, SdnOwner};
29
30pub trait SdnControllerUtils<UserData, SC> {
31    fn feature_control(&mut self, userdata: UserData, cmd: FeaturesControl);
32    fn service_control(&mut self, service: ServiceId, userdata: UserData, cmd: SC);
33}
34
35impl<
36        UserData: 'static + Send + Sync + Copy + Eq + Hash + Debug,
37        SC: 'static + Send + Sync + Clone,
38        SE: 'static + Send + Sync + Clone,
39        TC: 'static + Send + Sync + Clone,
40        TW: 'static + Send + Sync + Clone,
41    > SdnControllerUtils<UserData, SC> for SdnController<UserData, SC, SE, TC, TW>
42{
43    fn feature_control(&mut self, userdata: UserData, cmd: FeaturesControl) {
44        self.send_to(0, SdnExtIn::FeaturesControl(userdata, cmd));
45    }
46
47    fn service_control(&mut self, service: ServiceId, userdata: UserData, cmd: SC) {
48        self.send_to(0, SdnExtIn::ServicesControl(service, userdata, cmd));
49    }
50}