From 575525af87bb092285f505b0127ba3c41f2f9c12 Mon Sep 17 00:00:00 2001 From: Thilo Behnke Date: Fri, 13 May 2022 15:12:30 +0200 Subject: [PATCH] compiling code with mutex in service fn --- pong/src/event.rs | 2 +- server/src/http.rs | 18 ++++++++++-------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/pong/src/event.rs b/pong/src/event.rs index 9494a48..04677a9 100644 --- a/pong/src/event.rs +++ b/pong/src/event.rs @@ -9,7 +9,7 @@ pub mod event { pub msg: String } - pub trait EventWriterImpl { + pub trait EventWriterImpl : Send + Sync { fn write(&mut self, event: Event) -> Result<(), ()>; } diff --git a/server/src/http.rs b/server/src/http.rs index 708065d..20815a8 100644 --- a/server/src/http.rs +++ b/server/src/http.rs @@ -19,15 +19,17 @@ impl HttpServer { HttpServer {addr, port, event_writer} } - pub async fn run(&self) -> Result<(), Box> { - let mut event_writer = Arc::clone(&self.event_writer); - let make_svc = make_service_fn(|socket: &AddrStream| async { - Ok::<_, Infallible>(service_fn(move |req: Request| { - async move { + pub async fn run(self) -> Result<(), Box> { + let make_svc = make_service_fn(|socket: &AddrStream| { + let mut event_writer = Arc::clone(&self.event_writer); + async move { + Ok::<_, Infallible>(service_fn(move |req: Request| { let mut event_writer = Arc::clone(&event_writer); - handle_request(&event_writer, req).await - } - })) + async move { + return handle_request(&event_writer, req).await; + } + })) + } }); let host = (self.addr, self.port).into();