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

45 lines
943 B
Rust
Raw Normal View History

2016-11-15 03:48:01 -08:00
use tokio_core::io::{write_all, WriteAll};
use session::Session;
2016-11-15 04:11:05 -08:00
use io::{SharedTcpStream, read_any_message, ReadAnyMessage};
2016-11-09 13:36:29 -08:00
use util::PeerInfo;
2016-10-14 01:55:28 -07:00
pub struct Channel {
2016-11-09 13:36:29 -08:00
stream: SharedTcpStream,
peer_info: PeerInfo,
session: Session,
2016-10-14 01:55:28 -07:00
}
impl Channel {
2016-11-09 13:36:29 -08:00
pub fn new(stream: SharedTcpStream, peer_info: PeerInfo, session: Session) -> Self {
2016-10-14 01:55:28 -07:00
Channel {
2016-11-09 13:36:29 -08:00
stream: stream,
peer_info: peer_info,
session: session,
2016-10-14 01:55:28 -07:00
}
}
2016-11-15 03:48:01 -08:00
pub fn write_message<T>(&self, message: T) -> WriteAll<SharedTcpStream, T> where T: AsRef<[u8]> {
write_all(self.stream.clone(), message)
2016-10-14 01:55:28 -07:00
}
pub fn read_message(&self) -> ReadAnyMessage<SharedTcpStream> {
2016-11-09 13:36:29 -08:00
read_any_message(self.stream.clone(), self.peer_info.magic)
2016-10-14 01:55:28 -07:00
}
pub fn shutdown(&self) {
self.stream.shutdown();
}
2016-10-14 01:55:28 -07:00
pub fn version(&self) -> u32 {
2016-11-09 13:36:29 -08:00
self.peer_info.version
2016-10-14 01:55:28 -07:00
}
2016-10-18 03:14:54 -07:00
pub fn peer_info(&self) -> PeerInfo {
2016-11-09 13:36:29 -08:00
self.peer_info.clone()
2016-10-18 03:14:54 -07:00
}
pub fn session(&self) -> &Session {
&self.session
}
2016-10-14 01:55:28 -07:00
}