Skip to content

Commit 47abdf7

Browse files
committed
log all read/writes and flush
1 parent 15594e6 commit 47abdf7

File tree

2 files changed

+25
-4
lines changed

2 files changed

+25
-4
lines changed

src/imap/client.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ impl Client {
213213
let events = context.events.clone();
214214
let logging_stream = LoggingStream::new(
215215
tls_stream,
216-
"some IMAP TLS stream".to_string(),
216+
format!("TLS IMAP stream {hostname} ({addr})"),
217217
account_id,
218218
events,
219219
);

src/log/logging_stream.rs

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,20 @@ impl<S: SessionStream> AsyncRead for LoggingStream<S> {
5050
cx: &mut Context<'_>,
5151
buf: &mut ReadBuf<'_>,
5252
) -> Poll<std::io::Result<()>> {
53-
self.project().inner.poll_read(cx, buf)
53+
let projected = self.project();
54+
let old_remaining = buf.remaining();
55+
56+
let res = projected.inner.poll_read(cx, buf);
57+
58+
let n = old_remaining - buf.remaining();
59+
let log_message = format!("{}: READING {}", projected.tag, n);
60+
projected.events.emit(Event {
61+
id: 0,
62+
typ: EventType::Info(log_message),
63+
});
64+
65+
66+
res
5467
}
5568
}
5669

@@ -60,7 +73,7 @@ impl<S: SessionStream> AsyncWrite for LoggingStream<S> {
6073
cx: &mut std::task::Context<'_>,
6174
buf: &[u8],
6275
) -> Poll<std::io::Result<usize>> {
63-
let log_message = format!("WRITING {}", buf.len());
76+
let log_message = format!("{}: WRITING {}", self.tag, buf.len());
6477

6578
let projected = self.project();
6679
projected.events.emit(Event {
@@ -75,7 +88,15 @@ impl<S: SessionStream> AsyncWrite for LoggingStream<S> {
7588
self: Pin<&mut Self>,
7689
cx: &mut std::task::Context<'_>,
7790
) -> Poll<std::io::Result<()>> {
78-
self.project().inner.poll_flush(cx)
91+
let log_message = format!("{}: FLUSH", self.tag);
92+
93+
let projected = self.project();
94+
projected.events.emit(Event {
95+
id: 0,
96+
typ: EventType::Info(log_message),
97+
});
98+
99+
projected.inner.poll_flush(cx)
79100
}
80101

81102
fn poll_shutdown(

0 commit comments

Comments
 (0)