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