stream_ws/
tungstenite.rs

1use crate::{WsErrorKind, WsMessageHandle, WsMessageKind};
2use tungstenite::{Error, Message};
3
4pub type WsByteStream<S> = crate::WsByteStream<S, Message, Error, WsMessageHandler>;
5
6pub struct WsMessageHandler;
7
8impl WsMessageHandle<Message, Error> for WsMessageHandler {
9    fn message_into_kind(msg: Message) -> WsMessageKind {
10        match msg {
11            Message::Binary(msg) => WsMessageKind::Bytes(msg),
12            Message::Close(_) => WsMessageKind::Close,
13            _ => WsMessageKind::Other,
14        }
15    }
16
17    fn error_into_kind(e: Error) -> WsErrorKind {
18        match e {
19            Error::ConnectionClosed => WsErrorKind::Closed,
20            Error::AlreadyClosed => WsErrorKind::AlreadyClosed,
21            Error::Io(e) => WsErrorKind::Io(e),
22            e => WsErrorKind::Other(Box::new(e)),
23        }
24    }
25
26    fn message_from_bytes<T: Into<Vec<u8>>>(bytes: T) -> Message {
27        Message::Binary(bytes.into())
28    }
29}