Add kill send to WasmGateway
This commit is contained in:
parent
926a9fc90e
commit
50cd93aae1
|
@ -3,18 +3,19 @@ use std::u8;
|
||||||
|
|
||||||
use super::events::Events;
|
use super::events::Events;
|
||||||
use super::*;
|
use super::*;
|
||||||
|
use futures_util::stream::SplitStream;
|
||||||
use futures_util::StreamExt;
|
use futures_util::StreamExt;
|
||||||
use tokio::task;
|
use tokio::task;
|
||||||
use tokio_stream::StreamExt;
|
|
||||||
use ws_stream_wasm::*;
|
use ws_stream_wasm::*;
|
||||||
|
|
||||||
use crate::types::{self, GatewayReceivePayload, WebSocketEvent};
|
use crate::types::{self, GatewayReceivePayload};
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct WasmGateway {
|
pub struct WasmGateway {
|
||||||
events: Arc<Mutex<Events>>,
|
events: Arc<Mutex<Events>>,
|
||||||
heartbeat_handler: HeartbeatHandler,
|
heartbeat_handler: HeartbeatHandler,
|
||||||
websocket_send: Arc<Mutex<SplitSink<WsStream, WsMessage>>>,
|
websocket_send: Arc<Mutex<SplitSink<WsStream, WsMessage>>>,
|
||||||
websocket_receive: SplitStream<WsStream>,
|
websocket_receive: SplitStream<WsStream>,
|
||||||
|
kill_send: tokio::sync::broadcast::Sender<()>,
|
||||||
store: GatewayStore,
|
store: GatewayStore,
|
||||||
url: String,
|
url: String,
|
||||||
}
|
}
|
||||||
|
@ -84,10 +85,15 @@ impl GatewayCapable<WsMessage, WsStream> for WasmGateway {
|
||||||
|
|
||||||
let mut gateway = WasmGateway {
|
let mut gateway = WasmGateway {
|
||||||
events: shared_events.clone(),
|
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_send: shared_websocket_send.clone(),
|
||||||
websocket_receive,
|
websocket_receive,
|
||||||
store: store.clone(),
|
store: store.clone(),
|
||||||
|
kill_send: kill_send.clone(),
|
||||||
url: websocket_url.clone(),
|
url: websocket_url.clone(),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -103,6 +109,15 @@ impl GatewayCapable<WsMessage, WsStream> for WasmGateway {
|
||||||
store,
|
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 {
|
impl WasmGateway {
|
||||||
|
|
Loading…
Reference in New Issue