pub trait Handler: Send + 'static {
// Required methods
fn on_downstream_data(&mut self, io: &mut SessionIo<'_>, data: &[u8]);
fn on_upstream_connected(&mut self, io: &mut SessionIo<'_>);
fn on_upstream_data(&mut self, io: &mut SessionIo<'_>, data: &[u8]);
fn on_downstream_eof(&mut self, io: &mut SessionIo<'_>);
fn on_upstream_eof(&mut self, io: &mut SessionIo<'_>);
fn on_upstream_error(&mut self, io: &mut SessionIo<'_>, err: Error);
// Provided methods
fn on_connected(&mut self, io: &mut SessionIo<'_>) { ... }
fn on_downstream_flushed(&mut self, io: &mut SessionIo<'_>) { ... }
fn on_upstream_flushed(&mut self, io: &mut SessionIo<'_>) { ... }
fn on_downstream_error(&mut self, io: &mut SessionIo<'_>, err: Error) { ... }
fn on_shutdown_hint(&mut self, io: &mut SessionIo<'_>) { ... }
fn on_deadline(&mut self, io: &mut SessionIo<'_>, reason: DeadlineReason) { ... }
}Expand description
Per-connection handler. One instance is shared by all sessions of a
worker (single-threaded dispatch; per-connection state lives in the
session, reached through SessionIo).
Required Methods§
Sourcefn on_downstream_data(&mut self, io: &mut SessionIo<'_>, data: &[u8])
fn on_downstream_data(&mut self, io: &mut SessionIo<'_>, data: &[u8])
Bytes arrived from the downstream (client) socket.
Sourcefn on_upstream_connected(&mut self, io: &mut SessionIo<'_>)
fn on_upstream_connected(&mut self, io: &mut SessionIo<'_>)
Upstream connect established.
Sourcefn on_upstream_data(&mut self, io: &mut SessionIo<'_>, data: &[u8])
fn on_upstream_data(&mut self, io: &mut SessionIo<'_>, data: &[u8])
Bytes arrived from the upstream (backend) socket.
Sourcefn on_downstream_eof(&mut self, io: &mut SessionIo<'_>)
fn on_downstream_eof(&mut self, io: &mut SessionIo<'_>)
Downstream EOF (client half-closed).
Sourcefn on_upstream_eof(&mut self, io: &mut SessionIo<'_>)
fn on_upstream_eof(&mut self, io: &mut SessionIo<'_>)
Upstream EOF.
Sourcefn on_upstream_error(&mut self, io: &mut SessionIo<'_>, err: Error)
fn on_upstream_error(&mut self, io: &mut SessionIo<'_>, err: Error)
Upstream I/O error.
Provided Methods§
Sourcefn on_connected(&mut self, io: &mut SessionIo<'_>)
fn on_connected(&mut self, io: &mut SessionIo<'_>)
A new downstream connection was accepted.
Sourcefn on_downstream_flushed(&mut self, io: &mut SessionIo<'_>)
fn on_downstream_flushed(&mut self, io: &mut SessionIo<'_>)
The queued downstream write batch fully flushed.
Sourcefn on_upstream_flushed(&mut self, io: &mut SessionIo<'_>)
fn on_upstream_flushed(&mut self, io: &mut SessionIo<'_>)
The queued upstream write batch fully flushed.
Sourcefn on_downstream_error(&mut self, io: &mut SessionIo<'_>, err: Error)
fn on_downstream_error(&mut self, io: &mut SessionIo<'_>, err: Error)
Downstream I/O error (session should close).
Sourcefn on_shutdown_hint(&mut self, io: &mut SessionIo<'_>)
fn on_shutdown_hint(&mut self, io: &mut SessionIo<'_>)
Worker is draining (shutdown): finish in-flight work promptly.
Sourcefn on_deadline(&mut self, io: &mut SessionIo<'_>, reason: DeadlineReason)
fn on_deadline(&mut self, io: &mut SessionIo<'_>, reason: DeadlineReason)
Session deadline expired; reason says which deadline.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".