diff --git a/message/src/error.rs b/message/src/error.rs index 69ba2948..411eb35b 100644 --- a/message/src/error.rs +++ b/message/src/error.rs @@ -1,5 +1,7 @@ use ser::Error as ReaderError; +pub type MessageResult = Result; + #[derive(Debug, PartialEq)] pub enum Error { /// Deserialization failed. diff --git a/message/src/lib.rs b/message/src/lib.rs index 66317652..f74be445 100644 --- a/message/src/lib.rs +++ b/message/src/lib.rs @@ -6,13 +6,13 @@ extern crate serialization as ser; pub mod common; mod message; -pub mod serialization; +mod serialization; pub mod types; mod error; pub use primitives::{hash, bytes}; -pub use message::{Message, MessageHeader}; -pub use error::Error; -pub use serialization::PayloadType; -pub type MessageResult = Result; +pub use common::{Command, Magic}; +pub use message::{Message, MessageHeader, Payload}; +pub use serialization::{serialize_payload, deserialize_payload}; +pub use error::{Error, MessageResult}; diff --git a/message/src/message/message.rs b/message/src/message/message.rs index 860bcd91..ee1f170d 100644 --- a/message/src/message/message.rs +++ b/message/src/message/message.rs @@ -2,13 +2,13 @@ use ser::Stream; use bytes::TaggedBytes; use common::Magic; use serialization::serialize_payload; -use {PayloadType, MessageResult, MessageHeader}; +use {Payload, MessageResult, MessageHeader}; pub struct Message { bytes: TaggedBytes, } -impl Message where T: PayloadType { +impl Message where T: Payload { pub fn new(magic: Magic, version: u32, payload: &T) -> MessageResult { let serialized = try!(serialize_payload(payload, version)); let header = MessageHeader::for_data(magic, T::command().into(), &serialized); diff --git a/message/src/message/mod.rs b/message/src/message/mod.rs index 4bf62b8f..7d16d084 100644 --- a/message/src/message/mod.rs +++ b/message/src/message/mod.rs @@ -1,5 +1,7 @@ mod message; mod message_header; +pub mod payload; pub use self::message::Message; pub use self::message_header::MessageHeader; +pub use self::payload::Payload; diff --git a/message/src/message/payload.rs b/message/src/message/payload.rs new file mode 100644 index 00000000..21ce444d --- /dev/null +++ b/message/src/message/payload.rs @@ -0,0 +1,9 @@ +use ser::{Reader, Stream}; +use MessageResult; + +pub trait Payload: Send + 'static { + fn version() -> u32; + fn command() -> &'static str; + fn deserialize_payload(reader: &mut Reader, version: u32) -> MessageResult where Self: Sized; + fn serialize_payload(&self, stream: &mut Stream, version: u32) -> MessageResult<()>; +} diff --git a/message/src/serialization/mod.rs b/message/src/serialization/mod.rs index 531744b1..b489a951 100644 --- a/message/src/serialization/mod.rs +++ b/message/src/serialization/mod.rs @@ -1,14 +1,5 @@ mod stream; mod reader; -pub use self::stream::{PayloadStream, serialize_payload}; -pub use self::reader::{PayloadReader, deserialize_payload}; -use ser::{Reader, Stream}; -use MessageResult; - -pub trait PayloadType: Send + 'static { - fn version() -> u32; - fn command() -> &'static str; - fn deserialize_payload(reader: &mut Reader, version: u32) -> MessageResult where Self: Sized; - fn serialize_payload(&self, stream: &mut Stream, version: u32) -> MessageResult<()>; -} +pub use self::stream::serialize_payload; +pub use self::reader::deserialize_payload; diff --git a/message/src/serialization/reader.rs b/message/src/serialization/reader.rs index c25c8c4e..f9cc9a6e 100644 --- a/message/src/serialization/reader.rs +++ b/message/src/serialization/reader.rs @@ -1,8 +1,7 @@ use ser::Reader; -use serialization::PayloadType; -use Error; +use {Payload, Error}; -pub fn deserialize_payload(buffer: &[u8], version: u32) -> Result where T: PayloadType { +pub fn deserialize_payload(buffer: &[u8], version: u32) -> Result where T: Payload { let mut reader = PayloadReader::new(buffer, version); let result = try!(reader.read()); if !reader.is_finished() { @@ -25,7 +24,7 @@ impl<'a> PayloadReader<'a> { } } - pub fn read(&mut self) -> Result where T: PayloadType { + pub fn read(&mut self) -> Result where T: Payload { if T::version() > self.version { return Err(Error::InvalidVersion); } diff --git a/message/src/serialization/stream.rs b/message/src/serialization/stream.rs index 0c88d378..3b1f52e3 100644 --- a/message/src/serialization/stream.rs +++ b/message/src/serialization/stream.rs @@ -1,8 +1,8 @@ use bytes::Bytes; use ser::Stream; -use {PayloadType, Error, MessageResult}; +use {Payload, Error, MessageResult}; -pub fn serialize_payload(t: &T, version: u32) -> MessageResult where T: PayloadType { +pub fn serialize_payload(t: &T, version: u32) -> MessageResult where T: Payload { let mut stream = PayloadStream::new(version); try!(stream.append(t)); Ok(stream.out()) @@ -21,7 +21,7 @@ impl PayloadStream { } } - pub fn append(&mut self, t: &T) -> MessageResult<()> where T: PayloadType { + pub fn append(&mut self, t: &T) -> MessageResult<()> where T: Payload { if T::version() > self.version { return Err(Error::InvalidVersion); } diff --git a/message/src/types/addr.rs b/message/src/types/addr.rs index 8af5829a..33dd82c7 100644 --- a/message/src/types/addr.rs +++ b/message/src/types/addr.rs @@ -3,7 +3,7 @@ use ser::{ Deserializable, Reader, Error as ReaderError, }; use common::NetAddress; -use {PayloadType, MessageResult}; +use {Payload, MessageResult}; #[derive(Debug, PartialEq)] pub enum Addr { @@ -11,7 +11,7 @@ pub enum Addr { V31402(V31402), } -impl PayloadType for Addr { +impl Payload for Addr { fn version() -> u32 { 0 } diff --git a/message/src/types/blocktxn.rs b/message/src/types/blocktxn.rs index 138a9db2..ed1cd0ce 100644 --- a/message/src/types/blocktxn.rs +++ b/message/src/types/blocktxn.rs @@ -1,13 +1,13 @@ use ser::{Stream, Reader}; use common::BlockTransactions; -use {MessageResult, PayloadType}; +use {MessageResult, Payload}; #[derive(Debug, PartialEq)] pub struct BlockTxn { request: BlockTransactions, } -impl PayloadType for BlockTxn { +impl Payload for BlockTxn { fn version() -> u32 { 70014 } diff --git a/message/src/types/compactblock.rs b/message/src/types/compactblock.rs index 87bff7d1..5b0cb217 100644 --- a/message/src/types/compactblock.rs +++ b/message/src/types/compactblock.rs @@ -1,13 +1,13 @@ use ser::{Stream, Reader}; use common::BlockHeaderAndIDs; -use {PayloadType, MessageResult}; +use {Payload, MessageResult}; #[derive(Debug, PartialEq)] pub struct CompactBlock { header: BlockHeaderAndIDs, } -impl PayloadType for CompactBlock { +impl Payload for CompactBlock { fn version() -> u32 { 70014 } diff --git a/message/src/types/feefilter.rs b/message/src/types/feefilter.rs index 76bcbe45..e350959c 100644 --- a/message/src/types/feefilter.rs +++ b/message/src/types/feefilter.rs @@ -1,12 +1,12 @@ use ser::{Stream, Reader}; -use {PayloadType, MessageResult}; +use {Payload, MessageResult}; #[derive(Debug, PartialEq)] pub struct FeeFilter { fee_rate: u64, } -impl PayloadType for FeeFilter { +impl Payload for FeeFilter { fn version() -> u32 { 70013 } diff --git a/message/src/types/filteradd.rs b/message/src/types/filteradd.rs index 79f03366..076a7e78 100644 --- a/message/src/types/filteradd.rs +++ b/message/src/types/filteradd.rs @@ -1,6 +1,6 @@ use bytes::Bytes; use ser::{Stream, Reader}; -use {PayloadType, MessageResult}; +use {Payload, MessageResult}; #[derive(Debug, PartialEq)] pub struct FilterAdd { @@ -8,7 +8,7 @@ pub struct FilterAdd { data: Bytes, } -impl PayloadType for FilterAdd { +impl Payload for FilterAdd { fn version() -> u32 { 70001 } diff --git a/message/src/types/filterclear.rs b/message/src/types/filterclear.rs index 98157f73..9e36c27b 100644 --- a/message/src/types/filterclear.rs +++ b/message/src/types/filterclear.rs @@ -1,10 +1,10 @@ use ser::{Stream, Reader}; -use {PayloadType, MessageResult}; +use {Payload, MessageResult}; #[derive(Debug, PartialEq)] pub struct FilterClear; -impl PayloadType for FilterClear { +impl Payload for FilterClear { fn version() -> u32 { 70001 } diff --git a/message/src/types/filterload.rs b/message/src/types/filterload.rs index e5b5a75d..b12da440 100644 --- a/message/src/types/filterload.rs +++ b/message/src/types/filterload.rs @@ -1,6 +1,6 @@ use bytes::Bytes; use ser::{Stream, Reader}; -use {PayloadType, MessageResult}; +use {Payload, MessageResult}; #[derive(Debug, PartialEq)] pub struct FilterLoad { @@ -11,7 +11,7 @@ pub struct FilterLoad { flags: u8, } -impl PayloadType for FilterLoad { +impl Payload for FilterLoad { fn version() -> u32 { 70001 } diff --git a/message/src/types/getaddr.rs b/message/src/types/getaddr.rs index e61065d5..fb8f555d 100644 --- a/message/src/types/getaddr.rs +++ b/message/src/types/getaddr.rs @@ -1,10 +1,10 @@ use ser::{Stream, Reader}; -use {PayloadType, MessageResult}; +use {Payload, MessageResult}; #[derive(Debug, PartialEq)] pub struct GetAddr; -impl PayloadType for GetAddr { +impl Payload for GetAddr { fn version() -> u32 { 60002 } diff --git a/message/src/types/getblocks.rs b/message/src/types/getblocks.rs index faaa7f57..7c0a87a8 100644 --- a/message/src/types/getblocks.rs +++ b/message/src/types/getblocks.rs @@ -1,6 +1,6 @@ use hash::H256; use ser::{Stream, Reader}; -use {PayloadType, MessageResult}; +use {Payload, MessageResult}; #[derive(Debug, PartialEq)] pub struct GetBlocks { @@ -9,7 +9,7 @@ pub struct GetBlocks { hash_stop: H256, } -impl PayloadType for GetBlocks { +impl Payload for GetBlocks { fn version() -> u32 { 0 } diff --git a/message/src/types/getblocktxn.rs b/message/src/types/getblocktxn.rs index 33884e1d..4168a4d1 100644 --- a/message/src/types/getblocktxn.rs +++ b/message/src/types/getblocktxn.rs @@ -1,13 +1,13 @@ use ser::{Stream, Reader}; use common::BlockTransactionsRequest; -use {PayloadType, MessageResult}; +use {Payload, MessageResult}; #[derive(Debug, PartialEq)] pub struct GetBlockTxn { request: BlockTransactionsRequest, } -impl PayloadType for GetBlockTxn { +impl Payload for GetBlockTxn { fn version() -> u32 { 70014 } diff --git a/message/src/types/getdata.rs b/message/src/types/getdata.rs index e771fd51..c5fc48a7 100644 --- a/message/src/types/getdata.rs +++ b/message/src/types/getdata.rs @@ -1,13 +1,13 @@ use ser::{Stream, Reader}; use common::InventoryVector; -use {PayloadType, MessageResult}; +use {Payload, MessageResult}; #[derive(Debug, PartialEq)] pub struct GetData { pub inventory: Vec, } -impl PayloadType for GetData { +impl Payload for GetData { fn version() -> u32 { 0 } diff --git a/message/src/types/getheaders.rs b/message/src/types/getheaders.rs index 88e0a6b2..9444f710 100644 --- a/message/src/types/getheaders.rs +++ b/message/src/types/getheaders.rs @@ -1,6 +1,6 @@ use hash::H256; use ser::{Stream, Reader}; -use {PayloadType, MessageResult}; +use {Payload, MessageResult}; #[derive(Debug, PartialEq)] pub struct GetHeaders { @@ -9,7 +9,7 @@ pub struct GetHeaders { hash_stop: H256, } -impl PayloadType for GetHeaders { +impl Payload for GetHeaders { fn version() -> u32 { 0 } diff --git a/message/src/types/headers.rs b/message/src/types/headers.rs index bbd5d4bf..c2241d9e 100644 --- a/message/src/types/headers.rs +++ b/message/src/types/headers.rs @@ -1,6 +1,6 @@ use chain::BlockHeader; use ser::{Stream, Reader}; -use {PayloadType, MessageResult}; +use {Payload, MessageResult}; #[derive(Debug, PartialEq)] pub struct Headers { @@ -8,7 +8,7 @@ pub struct Headers { headers: Vec, } -impl PayloadType for Headers { +impl Payload for Headers { fn version() -> u32 { 0 } diff --git a/message/src/types/inv.rs b/message/src/types/inv.rs index 1978481e..00c24202 100644 --- a/message/src/types/inv.rs +++ b/message/src/types/inv.rs @@ -1,13 +1,13 @@ use ser::{Stream, Reader}; use common::InventoryVector; -use {PayloadType, MessageResult}; +use {Payload, MessageResult}; #[derive(Debug, PartialEq)] pub struct Inv { pub inventory: Vec, } -impl PayloadType for Inv { +impl Payload for Inv { fn version() -> u32 { 0 } diff --git a/message/src/types/mempool.rs b/message/src/types/mempool.rs index 6bef1893..1ef86179 100644 --- a/message/src/types/mempool.rs +++ b/message/src/types/mempool.rs @@ -1,10 +1,10 @@ use ser::{Stream, Reader}; -use {PayloadType, MessageResult}; +use {Payload, MessageResult}; #[derive(Debug, PartialEq)] pub struct MemPool; -impl PayloadType for MemPool { +impl Payload for MemPool { fn version() -> u32 { 60002 } diff --git a/message/src/types/merkle_block.rs b/message/src/types/merkle_block.rs index 516a8a06..790db5c4 100644 --- a/message/src/types/merkle_block.rs +++ b/message/src/types/merkle_block.rs @@ -2,7 +2,7 @@ use hash::H256; use bytes::Bytes; use ser::{Stream, Reader}; use chain::BlockHeader; -use {PayloadType, MessageResult}; +use {Payload, MessageResult}; #[derive(Debug, PartialEq)] pub struct MerkleBlock { @@ -12,7 +12,7 @@ pub struct MerkleBlock { flags: Bytes, } -impl PayloadType for MerkleBlock { +impl Payload for MerkleBlock { fn version() -> u32 { 70014 } diff --git a/message/src/types/notfound.rs b/message/src/types/notfound.rs index 03e420c1..c1c8094c 100644 --- a/message/src/types/notfound.rs +++ b/message/src/types/notfound.rs @@ -1,13 +1,13 @@ use ser::{Stream, Reader}; use common::InventoryVector; -use {PayloadType, MessageResult}; +use {Payload, MessageResult}; #[derive(Debug, PartialEq)] pub struct NotFound { pub inventory: Vec, } -impl PayloadType for NotFound { +impl Payload for NotFound { fn version() -> u32 { 0 } diff --git a/message/src/types/ping.rs b/message/src/types/ping.rs index c6134db4..9d8e00f4 100644 --- a/message/src/types/ping.rs +++ b/message/src/types/ping.rs @@ -1,12 +1,12 @@ use ser::{Stream, Reader}; -use {MessageResult, PayloadType}; +use {MessageResult, Payload}; #[derive(Debug, PartialEq)] pub struct Ping { pub nonce: u64, } -impl PayloadType for Ping { +impl Payload for Ping { fn version() -> u32 { 0 } diff --git a/message/src/types/pong.rs b/message/src/types/pong.rs index a1768a07..f695d954 100644 --- a/message/src/types/pong.rs +++ b/message/src/types/pong.rs @@ -1,12 +1,12 @@ use ser::{Stream, Reader}; -use {PayloadType, MessageResult}; +use {Payload, MessageResult}; #[derive(Debug, PartialEq)] pub struct Pong { pub nonce: u64, } -impl PayloadType for Pong { +impl Payload for Pong { fn version() -> u32 { 0 } diff --git a/message/src/types/reject.rs b/message/src/types/reject.rs index 74c887a3..33edf358 100644 --- a/message/src/types/reject.rs +++ b/message/src/types/reject.rs @@ -1,5 +1,5 @@ use ser::{Serializable, Stream, Deserializable, Reader, Error as ReaderError}; -use {PayloadType, MessageResult}; +use {Payload, MessageResult}; #[derive(Debug, PartialEq, Clone, Copy)] #[repr(u8)] @@ -59,7 +59,7 @@ pub struct Reject { // TODO: data } -impl PayloadType for Reject { +impl Payload for Reject { fn version() -> u32 { 0 } diff --git a/message/src/types/sendcompact.rs b/message/src/types/sendcompact.rs index 7477ecc2..b7c57bb3 100644 --- a/message/src/types/sendcompact.rs +++ b/message/src/types/sendcompact.rs @@ -1,5 +1,5 @@ use ser::{Stream, Reader}; -use {PayloadType, MessageResult}; +use {Payload, MessageResult}; #[derive(Debug, PartialEq)] pub struct SendCompact { @@ -7,7 +7,7 @@ pub struct SendCompact { second: u64, } -impl PayloadType for SendCompact { +impl Payload for SendCompact { fn version() -> u32 { 70014 } diff --git a/message/src/types/sendheaders.rs b/message/src/types/sendheaders.rs index 8ec2807d..35e3583b 100644 --- a/message/src/types/sendheaders.rs +++ b/message/src/types/sendheaders.rs @@ -1,10 +1,10 @@ use ser::{Stream, Reader}; -use {PayloadType, MessageResult}; +use {Payload, MessageResult}; #[derive(Debug, PartialEq)] pub struct SendHeaders; -impl PayloadType for SendHeaders { +impl Payload for SendHeaders { fn version() -> u32 { 70012 } diff --git a/message/src/types/verack.rs b/message/src/types/verack.rs index 65a4e546..3d0c0fb7 100644 --- a/message/src/types/verack.rs +++ b/message/src/types/verack.rs @@ -1,10 +1,10 @@ use ser::{Stream, Reader}; -use {PayloadType, MessageResult}; +use {Payload, MessageResult}; #[derive(Debug, PartialEq)] pub struct Verack; -impl PayloadType for Verack { +impl Payload for Verack { fn version() -> u32 { 0 } diff --git a/message/src/types/version.rs b/message/src/types/version.rs index b7f860de..f4d019b5 100644 --- a/message/src/types/version.rs +++ b/message/src/types/version.rs @@ -4,7 +4,7 @@ use ser::{ Deserializable, Reader, Error as ReaderError, }; use common::{NetAddress, ServiceFlags}; -use {PayloadType, MessageResult}; +use {Payload, MessageResult}; use serialization::deserialize_payload; #[derive(Debug, PartialEq)] @@ -14,7 +14,7 @@ pub enum Version { V70001(V0, V106, V70001), } -impl PayloadType for Version { +impl Payload for Version { fn version() -> u32 { 0 } diff --git a/p2p/src/io/read_header.rs b/p2p/src/io/read_header.rs index f3279c42..9cd3644d 100644 --- a/p2p/src/io/read_header.rs +++ b/p2p/src/io/read_header.rs @@ -1,8 +1,7 @@ use std::io; use futures::{Future, Poll, Async}; use tokio_core::io::{ReadExact, read_exact}; -use message::{MessageHeader, MessageResult}; -use message::common::Magic; +use message::{MessageHeader, MessageResult, Magic}; pub fn read_header(a: A, magic: Magic) -> ReadHeader where A: io::Read { ReadHeader { diff --git a/p2p/src/io/read_message.rs b/p2p/src/io/read_message.rs index 71a1b403..1af25209 100644 --- a/p2p/src/io/read_message.rs +++ b/p2p/src/io/read_message.rs @@ -1,13 +1,11 @@ use std::io; use std::marker::PhantomData; use futures::{Poll, Future, Async}; -use message::{MessageResult, Error}; -use message::common::Magic; -use message::serialization::PayloadType; +use message::{MessageResult, Error, Magic, Payload}; use io::{read_header, ReadHeader, read_payload, ReadPayload}; pub fn read_message(a: A, magic: Magic, version: u32) -> ReadMessage - where A: io::Read, M: PayloadType { + where A: io::Read, M: Payload { ReadMessage { state: ReadMessageState::ReadHeader { version: version, @@ -33,7 +31,7 @@ pub struct ReadMessage { message_type: PhantomData, } -impl Future for ReadMessage where A: io::Read, M: PayloadType { +impl Future for ReadMessage where A: io::Read, M: Payload { type Item = (A, MessageResult); type Error = io::Error; diff --git a/p2p/src/io/read_message_stream.rs b/p2p/src/io/read_message_stream.rs index 57d033e6..d8281d01 100644 --- a/p2p/src/io/read_message_stream.rs +++ b/p2p/src/io/read_message_stream.rs @@ -3,8 +3,7 @@ use futures::{Future, Poll, Async}; use futures::stream::Stream; use tokio_core::io::{read_exact, ReadExact}; use crypto::checksum; -use message::{Error, MessageHeader, MessageResult}; -use message::common::{Magic, Command}; +use message::{Error, MessageHeader, MessageResult, Magic, Command}; use bytes::Bytes; use io::{read_header, ReadHeader}; diff --git a/p2p/src/io/read_payload.rs b/p2p/src/io/read_payload.rs index 76bcec85..c6e2f45a 100644 --- a/p2p/src/io/read_payload.rs +++ b/p2p/src/io/read_payload.rs @@ -5,11 +5,10 @@ use tokio_core::io::{read_exact, ReadExact}; use bytes::Bytes; use hash::H32; use crypto::checksum; -use message::{Error, MessageResult}; -use message::serialization::{PayloadType, deserialize_payload}; +use message::{Error, MessageResult, Payload, deserialize_payload}; pub fn read_payload(a: A, version: u32, len: usize, checksum: H32) -> ReadPayload - where A: io::Read, M: PayloadType { + where A: io::Read, M: Payload { ReadPayload { reader: read_exact(a, Bytes::new_with_len(len)), version: version, @@ -25,7 +24,7 @@ pub struct ReadPayload { payload_type: PhantomData, } -impl Future for ReadPayload where A: io::Read, M: PayloadType { +impl Future for ReadPayload where A: io::Read, M: Payload { type Item = (A, MessageResult); type Error = io::Error; diff --git a/p2p/src/net/channel.rs b/p2p/src/net/channel.rs index 60e8de2c..b5d6b620 100644 --- a/p2p/src/net/channel.rs +++ b/p2p/src/net/channel.rs @@ -3,8 +3,7 @@ use futures::Poll; use futures::stream::Stream; use parking_lot::Mutex; use bytes::Bytes; -use message::{MessageResult, PayloadType}; -use message::common::Command; +use message::{MessageResult, Payload, Command}; use net::Connection; use io::{read_message_stream, ReadMessageStream, SharedTcpStream, WriteMessage}; @@ -22,7 +21,7 @@ impl Channel { } } - pub fn write_message(&self, payload: &T) -> WriteMessage where T: PayloadType { + pub fn write_message(&self, payload: &T) -> WriteMessage where T: Payload { self.connection.write_message(payload) } diff --git a/p2p/src/net/connection.rs b/p2p/src/net/connection.rs index 9b627157..ac20b616 100644 --- a/p2p/src/net/connection.rs +++ b/p2p/src/net/connection.rs @@ -1,6 +1,5 @@ use std::net; -use message::{Message, PayloadType}; -use message::common::Magic; +use message::{Message, Payload, Magic}; use io::{write_message, WriteMessage, SharedTcpStream}; pub struct Connection { @@ -11,7 +10,7 @@ pub struct Connection { } impl Connection { - pub fn write_message(&self, payload: &T) -> WriteMessage where T: PayloadType { + pub fn write_message(&self, payload: &T) -> WriteMessage where T: Payload { let message = match Message::new(self.magic, self.version, payload) { Ok(message) => message, Err(_err) => { diff --git a/p2p/src/net/connections.rs b/p2p/src/net/connections.rs index 51e8cc62..0390844c 100644 --- a/p2p/src/net/connections.rs +++ b/p2p/src/net/connections.rs @@ -5,7 +5,7 @@ use parking_lot::RwLock; use futures::{finished, Future}; use futures_cpupool::CpuPool; use tokio_core::reactor::Handle; -use message::PayloadType; +use message::Payload; use net::{Connection, Channel}; use PeerId; @@ -24,7 +24,7 @@ impl Connections { /// Broadcast messages to the network. /// Returned future completes of first confirmed receive. - pub fn broadcast(connections: &Arc, handle: &Handle, pool: &CpuPool, payload: T) where T: PayloadType { + pub fn broadcast(connections: &Arc, handle: &Handle, pool: &CpuPool, payload: T) where T: Payload { let channels = connections.channels(); for (id, channel) in channels.into_iter() { let write = channel.write_message(&payload); diff --git a/p2p/src/net/subscriber.rs b/p2p/src/net/subscriber.rs index c2d3e42b..7d234320 100644 --- a/p2p/src/net/subscriber.rs +++ b/p2p/src/net/subscriber.rs @@ -1,10 +1,8 @@ use std::sync::mpsc::{Sender, Receiver, channel}; use std::mem; use parking_lot::Mutex; -use message::{Error, PayloadType}; -use message::common::Command; +use message::{Error, Payload, Command, deserialize_payload}; use message::types::{Addr, GetAddr}; -use message::serialization::deserialize_payload; use PeerId; struct Handler { @@ -19,7 +17,7 @@ impl Default for Handler { } } -impl Handler where S: PayloadType { +impl Handler where S: Payload { fn command(&self) -> Command { S::command().into() } diff --git a/p2p/src/p2p.rs b/p2p/src/p2p.rs index a1775cf7..26966950 100644 --- a/p2p/src/p2p.rs +++ b/p2p/src/p2p.rs @@ -4,7 +4,7 @@ use futures::{Future, finished}; use futures::stream::Stream; use futures_cpupool::CpuPool; use tokio_core::reactor::Handle; -use message::PayloadType; +use message::Payload; use net::{connect, listen, Connections, Subscriber, MessagesHandler}; use Config; @@ -90,7 +90,7 @@ impl P2P { self.event_loop_handle.spawn(pool_work); } - pub fn broadcast(&self, payload: T) where T: PayloadType { + pub fn broadcast(&self, payload: T) where T: Payload { Connections::broadcast(&self.connections, &self.event_loop_handle, &self.pool, payload) } }