simplify client Vec management

This commit is contained in:
2020-10-22 12:23:08 -07:00
parent 117979704c
commit 4f59b256f5

View File

@@ -29,8 +29,7 @@ async fn main() {
pretty_env_logger::init_timed(); pretty_env_logger::init_timed();
let clients = Arc::new(Mutex::new(SmallVec::new())); let clients = Arc::new(Mutex::new(SmallVec::new()));
let clients_filter = clients.clone(); let events_clients = clients.clone();
let clients_filter = warp::any().map(move || clients_filter.clone());
let gpio = Gpio::new().expect("gpio init"); let gpio = Gpio::new().expect("gpio init");
let mut pin = gpio.get(BUTTON_PIN).expect("pin init").into_input_pullup(); let mut pin = gpio.get(BUTTON_PIN).expect("pin init").into_input_pullup();
@@ -47,11 +46,10 @@ async fn main() {
// GET /events // GET /events
let events = warp::path!("events") let events = warp::path!("events")
.and(warp::get()) .and(warp::get())
.and(clients_filter) .map(move || {
.map(|clients: Arc<Mutex<SmallVec<_>>>| {
info!("GET /events"); info!("GET /events");
let (tx, rx) = mpsc::channel(1); let (tx, rx) = mpsc::channel(1);
clients.lock().unwrap().push(tx); events_clients.lock().unwrap().push(tx);
let stream = stream::select( let stream = stream::select(
interval(Duration::from_secs(5)).map(move |_| { interval(Duration::from_secs(5)).map(move |_| {