1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
use {Buf, Transport, StreamSocket};
impl<'a, S: StreamSocket> Transport<'a, 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.
pub fn socket<'x>(&'x mut self) -> &'x mut S {
self.sock
}
/// Get a reference to the input buffer
///
/// It's expected that you only read and `consume()` bytes from buffer
/// but never write.
pub fn input<'x>(&'x mut self) -> &'x mut Buf {
self.inbuf
}
/// Get a reference to the output buffer
///
/// It's expected that you only inspect and write to the output buffer
/// but never `consume()`
pub fn output<'x>(&'x mut self) -> &'x mut Buf {
self.outbuf
}
/// 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
pub fn buffers<'x>(&'x mut self) -> (&'x mut Buf, &'x mut Buf) {
(self.inbuf, self.outbuf)
}
}