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
pub mod server; pub mod state; use std::{ error::Error, net::{SocketAddr, ToSocketAddrs}, sync::Arc, thread::JoinHandle, }; pub use crate::state::TelemetryState; pub fn new_state() -> Arc<TelemetryState> { Arc::new(TelemetryState::default()) } pub fn spawn<A>( address: A, state: Arc<TelemetryState>, ) -> Result<(SocketAddr, JoinHandle<()>), Box<dyn Error + Send + Sync>> where A: ToSocketAddrs + Send + 'static, { let server = server::listen(address, state); match server { Ok(server) => { let address = server.server_addr(); let handle = std::thread::spawn(move || server.run()); Ok((address, handle)) } Err(e) => Err(e), } }