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

Transport-specific error type.

Required methods

Write a single byte.

Flush this Connection, ensuring that all intermediately buffered contents reach their destination.

Note: Not all Connections 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.

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.

Trait Implementations

Transport-specific error type.

Write a single byte.

Write the entire buffer, blocking until complete. Read more

Flush this Connection, ensuring that all intermediately buffered contents reach their destination. Read more

Called at the start of a debugging session before any GDB packets have been sent/received. Read more

Implementations on Foreign Types

Implementors