Struct rotor_stream::Transport [] [src]

pub struct Transport<'a, S: StreamSocket> {
    // some fields omitted
}

Transport is thing that provides buffered I/O for stream sockets

This is usually passed in all the Protocol handler methods. But in case you manipulate the transport by some external methods (like the one stored in Arc<Mutex<Stream>> you may wish to use Stream::transport or Persistent::transport methods to manipulate tranpsport. Just remember to wake up the state machine after manipulating buffers of transport.

Methods

impl<'a, S: StreamSocket> Transport<'a, S>

fn socket<'x>(&'x mut self) -> &'x mut S

Get the reference to the underlying stream

It's here so you can inspect socket state or tune it. For example you might want to set TCP_CORK option or find out peer or local address.

Reading from and writing to a socket directly may lead to unexpected behavior. Use input() and output() buffers instead.

fn input<'x>(&'x mut self) -> &'x mut Buf

Get a reference to the input buffer

It's expected that you only read and consume() bytes from buffer but never write.

fn output<'x>(&'x mut self) -> &'x mut Buf

Get a reference to the output buffer

It's expected that you only inspect and write to the output buffer but never consume()

fn buffers<'x>(&'x mut self) -> (&'x mut Buf, &'x mut Buf)

Get a references to both buffers (input, output)

It's useful when you want to pass both things somewhere along the chain of calls. See input() and output() methods for more comments on buffer usage