From 0e16e55d648a158356e650545f5578d17c157448 Mon Sep 17 00:00:00 2001 From: bitfl0wer Date: Sun, 19 Nov 2023 18:27:49 +0100 Subject: [PATCH] Fix references to heartbeat_thread_communicator --- src/gateway/mod.rs | 8 ++++---- src/gateway/wasm/gateway.rs | 2 +- src/gateway/wasm/handle.rs | 18 +++++++++++++++++- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/src/gateway/mod.rs b/src/gateway/mod.rs index 3318d6b..c2965c3 100644 --- a/src/gateway/mod.rs +++ b/src/gateway/mod.rs @@ -380,7 +380,7 @@ where op_code: Some(GATEWAY_HEARTBEAT), }; - let heartbeat_thread_communicator = self.get_heartbeat_handler().send; + let heartbeat_thread_communicator = &self.get_heartbeat_handler().send; heartbeat_thread_communicator .send(heartbeat_communication) @@ -409,7 +409,7 @@ where }; let heartbeat_handler = self.get_heartbeat_handler(); - let heartbeat_thread_communicator = heartbeat_handler.send; + let heartbeat_thread_communicator = &heartbeat_handler.send; heartbeat_thread_communicator .send(heartbeat_communication) @@ -442,7 +442,7 @@ where }; let heartbeat_handler = self.get_heartbeat_handler(); - let heartbeat_thread_communicator = heartbeat_handler.send; + let heartbeat_thread_communicator = &heartbeat_handler.send; heartbeat_thread_communicator .send(heartbeat_communication) .await @@ -571,7 +571,7 @@ pub struct HeartbeatHandler> { hb_type: (PhantomData, PhantomData), } -impl + Send> HeartbeatHandler { +impl + Send + 'static> HeartbeatHandler { pub async fn heartbeat_task( websocket_tx: Arc>>, heartbeat_interval: Duration, diff --git a/src/gateway/wasm/gateway.rs b/src/gateway/wasm/gateway.rs index b7ca51b..516ac9e 100644 --- a/src/gateway/wasm/gateway.rs +++ b/src/gateway/wasm/gateway.rs @@ -41,7 +41,7 @@ impl GatewayCapable for WasmGateway { async fn spawn>( websocket_url: String, ) -> Result { - let (_, mut websocket_stream) = match WsMeta::connect(websocket_url.clone(), None).await { + let (_, websocket_stream) = match WsMeta::connect(websocket_url.clone(), None).await { Ok(ws) => Ok(ws), Err(e) => Err(GatewayError::CannotConnect { error: e.to_string(), diff --git a/src/gateway/wasm/handle.rs b/src/gateway/wasm/handle.rs index c9ad14d..3e77ed3 100644 --- a/src/gateway/wasm/handle.rs +++ b/src/gateway/wasm/handle.rs @@ -14,7 +14,7 @@ pub struct WasmGatewayHandle { pub(crate) store: GatewayStore, } -#[async_trait] +#[async_trait(?Send)] impl GatewayHandleCapable for WasmGatewayHandle { fn new( url: String, @@ -31,4 +31,20 @@ impl GatewayHandleCapable for WasmGatewayHandle { store, } } + + async fn send_json_event(&self, op_code: u8, to_send: serde_json::Value) { + self.send_json_event(op_code, to_send).await + } + + async fn observe + Send + Sync>( + &self, + object: Arc>, + ) -> Arc> { + self.observe(object).await + } + + async fn close(&self) { + self.kill_send.send(()).unwrap(); + self.websocket_send.lock().await.close().await.unwrap(); + } }