parity-zcash/p2p/src/net/channel.rs

48 lines
1.1 KiB
Rust

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