signald_rust/socket/
test.rs1use std::sync::{Arc, Mutex};
2use bus::{Bus, BusReader};
3use crate::signaldresponse::SignaldResponse;
4use crate::signaldrequest::SignaldRequest;
5use crate::socket::Socket;
6use crate::signaldresponse::ResponseType::BusUpdate;
7use std::thread;
8use std::time::Duration;
9
10#[allow(dead_code)]
11pub struct TestSignaldSocket {
12 bus: Arc<Mutex<Bus<SignaldResponse>>>,
13}
14impl TestSignaldSocket {
15 pub fn new(bus_size: usize) -> TestSignaldSocket {
16 let bus = Arc::new(Mutex::new(Bus::new(bus_size)));
17
18 let bus_tx_seconds = bus.clone();
22 let update_response = SignaldResponse {
23 id: None,
24 data: BusUpdate
25 };
26 thread::spawn(move || {
27 loop {
28 thread::sleep(Duration::from_secs(1));
29 bus_tx_seconds.lock().unwrap().broadcast(update_response.clone());
30 }
31 });
32
33 Self {
34 bus,
35 }
36 }
37
38 pub fn get_tx(&mut self) -> Arc<Mutex<Bus<SignaldResponse>>> {
39 self.bus.clone()
40 }
41}
42impl Socket for TestSignaldSocket {
43 fn send_request(&mut self, _request: &SignaldRequest) {
44 unimplemented!()
45 }
46
47 fn get_rx(&mut self) -> BusReader<SignaldResponse> {
48 self.bus.lock().unwrap().add_rx()
49 }
50}