use io::{read_any_message, ReadAnyMessage, SharedTcpStream}; use session::Session; use tokio_io::io::{write_all, WriteAll}; 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(&self, message: T) -> WriteAll where T: AsRef<[u8]>, { write_all(self.stream.clone(), message) } pub fn read_message(&self) -> ReadAnyMessage { 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 } }