     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
    38
    39
    40
    41
    42
    43
    44

    use tokio_io::io::{write_all, WriteAll};
    use session::Session;
    use io::{SharedTcpStream, read_any_message, ReadAnyMessage};
    use util::PeerInfo;

    pub struct Channel {
    	stream: SharedTcpStream,
    	peer_info: PeerInfo,
    	session: Session,
    }

    impl Channel {
    	pub fn new(stream: SharedTcpStream, peer_info: PeerInfo, session: Session) -> Self {
    		Channel {
    			stream: stream,
    			peer_info: peer_info,
    			session: session,
    		}
    	}

    	pub fn write_message<T>(&self, message: T) -> WriteAll<SharedTcpStream, T> where T: AsRef<[u8]> {
    		write_all(self.stream.clone(), message)
    	}

    	pub fn read_message(&self) -> ReadAnyMessage<SharedTcpStream> {
    		read_any_message(self.stream.clone(), self.peer_info.magic)
    	}

    	pub fn shutdown(&self) {
    		self.stream.shutdown();
    	}

    	pub fn version(&self) -> u32 {
    		self.peer_info.version
    	}

    	pub fn peer_info(&self) -> PeerInfo {
    		self.peer_info.clone()
    	}

    	pub fn session(&self) -> &Session {
    		&self.session
    	}
    }

# Help

## Keyboard Shortcuts

`?`
  Show this help dialog
`S`
  Focus the search field
`↑`
  Move up in search results
`↓`
  Move down in search results
`↹`
  Switch tab
`⏎`
  Go to active search result
`+`
  Expand all sections
`-`
  Collapse all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g. `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g. `vec -> usize` or `* -> vec`)

Search multiple things at once by splitting your query with comma (e.g. `str,u8` or `String,struct:Vec,test`)