Skip to main content

leyline/core/websocket/
debug.rs

1use std::fmt;
2
3use super::{WsConnection, WsInner, WsSink, WsSinkInner, WsStream, WsStreamInner};
4use crate::HttpVersion;
5use crate::trace::masked;
6
7impl WsInner {
8    fn version(&self) -> HttpVersion {
9        match self {
10            Self::H1(_) => HttpVersion::Http1_1,
11            Self::H2(_) => HttpVersion::Http2,
12        }
13    }
14}
15
16impl fmt::Debug for WsConnection {
17    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
18        f.debug_struct("WsConnection")
19            .field("transport", &self.inner.version())
20            .field("protocol", &self.protocol)
21            .field(
22                "headers",
23                &masked(self.headers.iter().map(|(k, v)| (k.as_str(), v.as_bytes()))),
24            )
25            .finish_non_exhaustive()
26    }
27}
28
29impl fmt::Debug for WsSink {
30    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
31        let transport = match &self.inner {
32            WsSinkInner::H1(_) => HttpVersion::Http1_1,
33            WsSinkInner::H2(_) => HttpVersion::Http2,
34        };
35        f.debug_struct("WsSink")
36            .field("transport", &transport)
37            .finish_non_exhaustive()
38    }
39}
40
41impl fmt::Debug for WsStream {
42    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
43        let transport = match &self.inner {
44            WsStreamInner::H1(_) => HttpVersion::Http1_1,
45            WsStreamInner::H2(_) => HttpVersion::Http2,
46        };
47        f.debug_struct("WsStream")
48            .field("transport", &transport)
49            .finish_non_exhaustive()
50    }
51}