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