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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
use super::rmb; pub mod internal; pub mod local; pub mod network; #[derive(Debug,PartialEq)] pub enum Bandwidth { Low, Medium, High, } pub trait Transport { fn name(&self) -> &'static str; fn bandwidth(&self) -> &Bandwidth; fn register(&self, channels: &std::ops::Range<rmb::Channel>, handler: fn(rmb::Channel, &dyn rmb::Msg)-> Result<String, String>) -> Result<String, String>; fn publish(&self, ch: rmb::Channel, msg: &dyn rmb::Msg) -> Result<String, String>; } #[cfg(test)] mod tests { use crate::transport::{Transport, Bandwidth, local, internal, network}; #[test] fn test_init() { let t = local::TransportLocal::new(); t.init().unwrap(); } #[test] fn get_local_name() { let t = local::TransportLocal::new(); assert_eq!(t.name(), "local"); assert_eq!(*t.bandwidth(), Bandwidth::Medium) } #[test] fn get_internal_name() { let t = internal::TransportInternal::new(); assert_eq!(t.name(), "internal"); assert_eq!(*t.bandwidth(), Bandwidth::High) } #[test] fn get_network_name() { let t = network::TransportNetwork::new(); assert_eq!(t.name(), "network"); assert_eq!(*t.bandwidth(), Bandwidth::Low) } }