Add kill send to WasmGateway

This commit is contained in:
bitfl0wer 2023-11-19 16:42:05 +01:00
parent 129e72dbf0
commit 4dc8dd9433
No known key found for this signature in database
GPG Key ID: 0ACD574FCF5226CF
1 changed files with 18 additions and 3 deletions

View File

@ -3,18 +3,19 @@ use std::u8;
use super::events::Events;
use super::*;
use futures_util::stream::SplitStream;
use futures_util::StreamExt;
use tokio::task;
use tokio_stream::StreamExt;
use ws_stream_wasm::*;
use crate::types::{self, GatewayReceivePayload, WebSocketEvent};
use crate::types::{self, GatewayReceivePayload};
#[derive(Debug)]
pub struct WasmGateway {
events: Arc<Mutex<Events>>,
heartbeat_handler: HeartbeatHandler,
websocket_send: Arc<Mutex<SplitSink<WsStream, WsMessage>>>,
websocket_receive: SplitStream<WsStream>,
kill_send: tokio::sync::broadcast::Sender<()>,
store: GatewayStore,
url: String,
}
@ -84,10 +85,15 @@ impl GatewayCapable<WsMessage, WsStream> for WasmGateway {
let mut gateway = WasmGateway {
events: shared_events.clone(),
heartbeat_handler: todo!(),
heartbeat_handler: HeartbeatHandler::new(
Duration::from_millis(gateway_hello.heartbeat_interval),
shared_websocket_send.clone(),
kill_send.subscribe(),
),
websocket_send: shared_websocket_send.clone(),
websocket_receive,
store: store.clone(),
kill_send: kill_send.clone(),
url: websocket_url.clone(),
};
@ -103,6 +109,15 @@ impl GatewayCapable<WsMessage, WsStream> for WasmGateway {
store,
))
}
fn get_heartbeat_handler(&self) -> &HeartbeatHandler {
&self.heartbeat_handler
}
async fn close(&mut self) {
self.kill_send.send(()).unwrap();
self.websocket_send.lock().await.close().await.unwrap();
}
}
impl WasmGateway {