leyline/core/websocket/
debug.rs1use 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}