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}