2016-11-15 03:48:01 -08:00
|
|
|
use tokio_core::io::{write_all, WriteAll};
|
2016-10-19 17:51:20 -07:00
|
|
|
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,
|
2016-10-18 05:29:38 -07:00
|
|
|
peer_info: PeerInfo,
|
2016-10-19 17:51:20 -07:00
|
|
|
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,
|
2016-10-19 17:51:20 -07:00
|
|
|
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
|
|
|
}
|
|
|
|
|
2016-10-19 17:51:20 -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
|
|
|
}
|
|
|
|
|
2016-10-18 05:29:38 -07:00
|
|
|
pub fn shutdown(&self) {
|
2016-10-19 17:51:20 -07:00
|
|
|
self.stream.shutdown();
|
2016-10-18 05:29:38 -07:00
|
|
|
}
|
|
|
|
|
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
|
|
|
|
2016-10-18 05:29:38 -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
|
|
|
}
|
2016-10-20 04:19:19 -07:00
|
|
|
|
|
|
|
pub fn session(&self) -> &Session {
|
|
|
|
&self.session
|
|
|
|
}
|
2016-10-14 01:55:28 -07:00
|
|
|
}
|