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 } }