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

45 lines
943 B
Rust

use tokio_core::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
}
}