Trait gdbstub::conn::Connection
source · [−]pub trait Connection {
type Error;
fn write(&mut self, byte: u8) -> Result<(), Self::Error>;
fn flush(&mut self) -> Result<(), Self::Error>;
fn write_all(&mut self, buf: &[u8]) -> Result<(), Self::Error> { ... }
fn on_session_start(&mut self) -> Result<(), Self::Error> { ... }
}
Expand description
A trait to perform in-order, serial, byte-wise I/O.
When the std
feature is enabled, this trait is automatically implemented
for TcpStream
and
UnixStream
(on unix systems).
Associated Types
Required methods
Flush this Connection, ensuring that all intermediately buffered contents reach their destination.
Note: Not all Connection
s have internal buffering (e.g: writing data
to a UART TX register with FIFOs disabled). In these cases, it’s fine to
simply return Ok(())
.
Provided methods
Write the entire buffer, blocking until complete.
This method’s default implementation calls self.write()
on each byte
in the buffer. This can be quite inefficient, so if a more efficient
implementation exists (such as calling write_all()
on an underlying
std::io::Write
object), this method should be overwritten.
fn on_session_start(&mut self) -> Result<(), Self::Error>
fn on_session_start(&mut self) -> Result<(), Self::Error>
Called at the start of a debugging session before any GDB packets have been sent/received.
This method’s default implementation is a no-op.
Example
The on_session_start
implementation for TcpStream
ensures that
set_nodelay(true)
is called. The GDB remote serial protocol requires sending/receiving
many small packets, so forgetting to enable TCP_NODELAY
can result in
a massively degraded debugging experience.