tab_websocket/resource/
connection.rs1use crate::WebsocketConnection;
2use futures::executor::block_on;
3use lifeline::impl_storage_take;
4use log::error;
5
6#[derive(Debug)]
8pub struct WebsocketResource(pub WebsocketConnection);
9
10impl Drop for WebsocketResource {
11 fn drop(&mut self) {
12 match block_on(self.0.close(None)) {
13 Ok(_) => {}
14 Err(err) => match err {
15 tungstenite::Error::ConnectionClosed => {}
16 tungstenite::Error::AlreadyClosed => {}
17 tungstenite::Error::Protocol(_) => {}
18 tungstenite::Error::Io(_) => {}
19 _ => error!("failed to close websocket: {}", err),
20 },
21 }
22 }
23}
24
25impl_storage_take!(WebsocketResource);