added logger to p2p, fixed reading messages
This commit is contained in:
parent
716fd8d949
commit
49bb034bbd
|
@ -4,6 +4,7 @@ version = "0.1.0"
|
|||
dependencies = [
|
||||
"clap 2.14.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"db 0.1.0",
|
||||
"env_logger 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"keys 0.1.0",
|
||||
"message 0.1.0",
|
||||
"miner 0.1.0",
|
||||
|
@ -11,6 +12,14 @@ dependencies = [
|
|||
"script 0.1.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "aho-corasick"
|
||||
version = "0.5.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ansi_term"
|
||||
version = "0.9.0"
|
||||
|
@ -116,6 +125,15 @@ name = "elastic-array"
|
|||
version = "0.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "env_logger"
|
||||
version = "0.3.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"regex 0.1.77 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "eth-secp256k1"
|
||||
version = "0.5.6"
|
||||
|
@ -203,6 +221,14 @@ name = "log"
|
|||
version = "0.3.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "memchr"
|
||||
version = "0.1.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "message"
|
||||
version = "0.1.0"
|
||||
|
@ -316,6 +342,7 @@ dependencies = [
|
|||
"bitcrypto 0.1.0",
|
||||
"futures 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"futures-cpupool 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"message 0.1.0",
|
||||
"parking_lot 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"primitives 0.1.0",
|
||||
|
@ -370,6 +397,23 @@ dependencies = [
|
|||
"rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "regex"
|
||||
version = "0.1.77"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"aho-corasick 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"regex-syntax 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"thread_local 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"utf8-ranges 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "regex-syntax"
|
||||
version = "0.3.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "rocksdb"
|
||||
version = "0.4.5"
|
||||
|
@ -467,6 +511,23 @@ dependencies = [
|
|||
"winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "thread-id"
|
||||
version = "2.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "thread_local"
|
||||
version = "0.2.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"thread-id 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "time"
|
||||
version = "0.1.35"
|
||||
|
@ -499,6 +560,11 @@ name = "unicode-width"
|
|||
version = "0.1.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "utf8-ranges"
|
||||
version = "0.1.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "vec_map"
|
||||
version = "0.6.0"
|
||||
|
@ -534,6 +600,7 @@ version = "0.3.4"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[metadata]
|
||||
"checksum aho-corasick 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ca972c2ea5f742bfce5687b9aef75506a764f61d37f8f649047846a9686ddb66"
|
||||
"checksum ansi_term 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "23ac7c30002a5accbf7e8987d0632fa6de155b7c3d39d0067317a391e00a2ef6"
|
||||
"checksum arrayvec 0.3.20 (registry+https://github.com/rust-lang/crates.io-index)" = "d89f1b0e242270b5b797778af0c8d182a1a2ccac5d8d6fadf414223cc0fab096"
|
||||
"checksum base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5024ee8015f02155eee35c711107ddd9a9bf3cb689cf2a9089c97e79b6e1ae83"
|
||||
|
@ -545,6 +612,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
"checksum crossbeam 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "0c5ea215664ca264da8a9d9c3be80d2eaf30923c259d03e870388eb927508f97"
|
||||
"checksum deque 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1614659040e711785ed8ea24219140654da1729f3ec8a47a9719d041112fe7bf"
|
||||
"checksum elastic-array 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4bc9250a632e7c001b741eb0ec6cee93c9a5b6d5f1879696a4b94d62b012210a"
|
||||
"checksum env_logger 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "15abd780e45b3ea4f76b4e9a26ff4843258dd8a3eed2775a0e7368c2e7936c2f"
|
||||
"checksum eth-secp256k1 0.5.6 (git+https://github.com/ethcore/rust-secp256k1)" = "<none>"
|
||||
"checksum futures 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0bd34f72c0fffc9d2f6c570fd392bf99b9c5cd1481d79809e1cc2320befc0af0"
|
||||
"checksum futures-cpupool 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bb982bb25cd8fa5da6a8eb3a460354c984ff1113da82bcb4f0b0862b5795db82"
|
||||
|
@ -554,6 +622,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
"checksum lazycell 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ce12306c4739d86ee97c23139f3a34ddf0387bbf181bc7929d287025a8c3ef6b"
|
||||
"checksum libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)" = "408014cace30ee0f767b1c4517980646a573ec61a57957aeeabcac8ac0a02e8d"
|
||||
"checksum log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ab83497bf8bf4ed2a74259c1c802351fcd67a65baa86394b6ba73c36f4838054"
|
||||
"checksum memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d8b629fb514376c675b98c1421e80b151d3817ac42d7c667717d282761418d20"
|
||||
"checksum mio 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2dadd39d4b47343e10513ac2a731c979517a4761224ecb6bbd243602300c9537"
|
||||
"checksum miow 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d5bfc6782530ac8ace97af10a540054a37126b63b0702ddaaa243b73b5745b9a"
|
||||
"checksum net2 0.2.26 (registry+https://github.com/rust-lang/crates.io-index)" = "5edf9cb6be97212423aed9413dd4729d62b370b5e1c571750e882cebbbc1e3e2"
|
||||
|
@ -567,6 +636,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
"checksum parking_lot_core 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fb1b97670a2ffadce7c397fb80a3d687c4f3060140b885621ef1653d0e5d5068"
|
||||
"checksum rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "2791d88c6defac799c3f20d74f094ca33b9332612d9aef9078519c82e4fe04a5"
|
||||
"checksum rayon 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "655df67c314c30fa3055a365eae276eb88aa4f3413a352a1ab32c1320eda41ea"
|
||||
"checksum regex 0.1.77 (registry+https://github.com/rust-lang/crates.io-index)" = "64b03446c466d35b42f2a8b203c8e03ed8b91c0f17b56e1f84f7210a257aa665"
|
||||
"checksum regex-syntax 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "48f0573bcee95a48da786f8823465b5f2a1fae288a55407aca991e5b3e0eae11"
|
||||
"checksum rocksdb 0.4.5 (git+https://github.com/ethcore/rust-rocksdb)" = "<none>"
|
||||
"checksum rocksdb-sys 0.3.0 (git+https://github.com/ethcore/rust-rocksdb)" = "<none>"
|
||||
"checksum rust-crypto 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)" = "f76d05d3993fd5f4af9434e8e436db163a12a9d40e1a58a726f27a01dfd12a2a"
|
||||
|
@ -578,10 +649,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
"checksum smallvec 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "fcc8d19212aacecf95e4a7a2179b26f7aeb9732a915cf01f05b0d3e044865410"
|
||||
"checksum strsim 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "50c069df92e4b01425a8bf3576d5d417943a6a7272fbabaf5bd80b1aaa76442e"
|
||||
"checksum term_size 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3f7f5f3f71b0040cecc71af239414c23fd3c73570f5ff54cf50e03cef637f2a0"
|
||||
"checksum thread-id 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a9539db560102d1cef46b8b78ce737ff0bb64e7e18d35b2a5688f7d097d0ff03"
|
||||
"checksum thread_local 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "8576dbbfcaef9641452d5cf0df9b0e7eeab7694956dd33bb61515fb8f18cfdd5"
|
||||
"checksum time 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)" = "3c7ec6d62a20df54e07ab3b78b9a3932972f4b7981de295563686849eb3989af"
|
||||
"checksum tokio-core 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "659cbae6c954dee37352853816c6a52180e47feb70be73bbfeec6d58c4da4a71"
|
||||
"checksum unicode-segmentation 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b905d0fc2a1f0befd86b0e72e31d1787944efef9d38b9358a9e92a69757f7e3b"
|
||||
"checksum unicode-width 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2d6722facc10989f63ee0e20a83cd4e1714a9ae11529403ac7e0afd069abc39e"
|
||||
"checksum utf8-ranges 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a1ca13c08c41c9c3e04224ed9ff80461d97e121589ff27c753a16cb10830ae0f"
|
||||
"checksum vec_map 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cac5efe5cb0fa14ec2f84f83c701c562ee63f6dcc680861b21d65c682adfb05f"
|
||||
"checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"
|
||||
"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
|
||||
|
|
|
@ -6,6 +6,7 @@ authors = ["Ethcore <admin@ethcore.io>"]
|
|||
description = "Parity bitcoin client."
|
||||
|
||||
[dependencies]
|
||||
env_logger = "0.3"
|
||||
clap = { version = "2", features = ["yaml"] }
|
||||
keys = { path = "keys" }
|
||||
message = { path = "message" }
|
||||
|
|
|
@ -10,6 +10,7 @@ futures = "0.1"
|
|||
futures-cpupool = "0.1"
|
||||
time = "0.1"
|
||||
rand = "0.3"
|
||||
log = "0.3"
|
||||
|
||||
primitives = { path = "../primitives" }
|
||||
bitcrypto = { path = "../crypto" }
|
||||
|
|
|
@ -58,6 +58,10 @@ impl<A> Stream for ReadMessageStream<A> where A: io::Read {
|
|||
};
|
||||
|
||||
self.state = next;
|
||||
Ok(result)
|
||||
match result {
|
||||
// by polling again, we register new future
|
||||
Async::NotReady => self.poll(),
|
||||
result => Ok(result)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,6 +5,8 @@ extern crate rand;
|
|||
extern crate time;
|
||||
extern crate tokio_core;
|
||||
extern crate parking_lot;
|
||||
#[macro_use]
|
||||
extern crate log;
|
||||
|
||||
extern crate bitcrypto as crypto;
|
||||
extern crate message;
|
||||
|
|
|
@ -7,7 +7,16 @@ use message::common::Command;
|
|||
use net::Connections;
|
||||
use PeerInfo;
|
||||
|
||||
/// Reads and concatenates incoming messages from all connections
|
||||
/// into a single messages stream.
|
||||
pub struct MessagePoller {
|
||||
last_polled: usize,
|
||||
connections: Weak<Connections>,
|
||||
}
|
||||
|
||||
/// Result of polling connections for new message.
|
||||
pub enum MessagePoll {
|
||||
/// Returned on new message.
|
||||
Ready {
|
||||
command: Command,
|
||||
payload: Bytes,
|
||||
|
@ -15,19 +24,18 @@ pub enum MessagePoll {
|
|||
peer_info: PeerInfo,
|
||||
errored_peers: Vec<PeerInfo>,
|
||||
},
|
||||
/// Returned when there are no new messages
|
||||
/// and some peers disconnected.
|
||||
OnlyErrors {
|
||||
errored_peers: Vec<PeerInfo>,
|
||||
}
|
||||
}
|
||||
|
||||
pub struct MessagePoller {
|
||||
last_polled: usize,
|
||||
connections: Weak<Connections>,
|
||||
},
|
||||
/// Returned when there are not peers to poll.
|
||||
WaitingForPeers,
|
||||
}
|
||||
|
||||
fn next_to_poll(channels: usize, last_polled: usize) -> usize {
|
||||
// it's irrelevant if we sometimes poll the same peer twice in a row
|
||||
if channels > last_polled + 1 {
|
||||
if channels - 1 > last_polled {
|
||||
// let's poll the next peer
|
||||
last_polled + 1
|
||||
} else {
|
||||
|
@ -53,23 +61,55 @@ impl Stream for MessagePoller {
|
|||
let connections = match self.connections.upgrade() {
|
||||
Some(c) => c,
|
||||
// application is about to shutdown
|
||||
// let's end the stream
|
||||
None => return Ok(None.into())
|
||||
};
|
||||
let channels = connections.channels();
|
||||
if channels.len() == 0 {
|
||||
// let's wait for some connections
|
||||
return Ok(Async::NotReady);
|
||||
}
|
||||
|
||||
let mut to_poll = next_to_poll(channels.len(), self.last_polled);
|
||||
let channels = connections.channels();
|
||||
match channels.len() {
|
||||
0 => {
|
||||
// stream is not ready for reading messages
|
||||
// returning Async::NotReady, would require scheduling a poll
|
||||
// returning Async::Ready with custom value is hash, cause next
|
||||
// poll will be automatically scheduled
|
||||
Ok(Async::Ready(Some(MessagePoll::WaitingForPeers)))
|
||||
},
|
||||
1 => {
|
||||
let (_, channel) = channels.iter().nth(0).expect("0 < channels.len(); qed");
|
||||
|
||||
match channel.poll_message() {
|
||||
Ok(Async::Ready(Some(Ok((command, payload))))) => {
|
||||
let message_poll = MessagePoll::Ready {
|
||||
command: command,
|
||||
payload: payload,
|
||||
version: channel.version(),
|
||||
peer_info: channel.peer_info(),
|
||||
errored_peers: Vec::new(),
|
||||
};
|
||||
|
||||
Ok(Async::Ready(Some(message_poll)))
|
||||
},
|
||||
Ok(Async::NotReady) => {
|
||||
Ok(Async::NotReady)
|
||||
},
|
||||
_ => {
|
||||
let message_poll = MessagePoll::OnlyErrors {
|
||||
errored_peers: vec![channel.peer_info()],
|
||||
};
|
||||
Ok(Async::Ready(Some(message_poll)))
|
||||
}
|
||||
}
|
||||
},
|
||||
n => {
|
||||
|
||||
let mut to_poll = next_to_poll(n, self.last_polled);
|
||||
let mut result = None;
|
||||
let mut errored_peers = Vec::new();
|
||||
|
||||
while result.is_none() && to_poll != self.last_polled {
|
||||
let (_, channel) = channels.iter().nth(to_poll).expect("to_poll < channels.len()");
|
||||
let status = channel.poll_message();
|
||||
let (_, channel) = channels.iter().nth(to_poll).expect("to_poll < channels.len(); qed");
|
||||
|
||||
match status {
|
||||
match channel.poll_message() {
|
||||
Ok(Async::Ready(Some(Ok((command, payload))))) => {
|
||||
result = Some((command, payload, channel.version(), channel.peer_info()));
|
||||
},
|
||||
|
@ -86,6 +126,7 @@ impl Stream for MessagePoller {
|
|||
}
|
||||
|
||||
self.last_polled = to_poll;
|
||||
|
||||
match result {
|
||||
Some((command, payload, version, info)) => {
|
||||
let message_poll = MessagePoll::Ready {
|
||||
|
@ -108,5 +149,7 @@ impl Stream for MessagePoller {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -37,8 +37,8 @@ impl P2P {
|
|||
}
|
||||
|
||||
pub fn run(&self) -> Result<(), io::Error> {
|
||||
for seednode in self.config.peers.iter() {
|
||||
self.connect(*seednode)
|
||||
for peer in self.config.peers.iter() {
|
||||
self.connect(*peer)
|
||||
}
|
||||
|
||||
try!(self.listen());
|
||||
|
@ -51,11 +51,14 @@ impl P2P {
|
|||
let connections = self.connections.clone();
|
||||
let node_table = self.node_table.clone();
|
||||
let connection = connect(&socket, &self.event_loop_handle, &self.config.connection);
|
||||
trace!("Trying to connect to: {}", socket);
|
||||
let pool_work = self.pool.spawn(connection).then(move |result| {
|
||||
if let Ok(Ok(con)) = result {
|
||||
trace!("Connected to {}", con.address);
|
||||
node_table.write().insert(con.address, con.services);
|
||||
connections.store(con);
|
||||
} else {
|
||||
trace!("Failed to connect to {}", socket);
|
||||
node_table.write().note_failure(&socket);
|
||||
}
|
||||
finished(())
|
||||
|
@ -69,6 +72,7 @@ impl P2P {
|
|||
let node_table = self.node_table.clone();
|
||||
let server = listen.for_each(move |result| {
|
||||
if let Ok(con) = result {
|
||||
trace!("Accepted connection from {}", con.address);
|
||||
node_table.write().insert(con.address, con.services);
|
||||
connections.store(con);
|
||||
}
|
||||
|
@ -89,7 +93,8 @@ impl P2P {
|
|||
let node_table = self.node_table.clone();
|
||||
let polling = poller.for_each(move |result| {
|
||||
match result {
|
||||
MessagePoll::Ready { errored_peers, .. } => {
|
||||
MessagePoll::Ready { errored_peers, command, peer_info, .. } => {
|
||||
trace!("Received message {} from {}", command, peer_info.address);
|
||||
// TODO: handle new messasges here!
|
||||
|
||||
let mut node_table = node_table.write();
|
||||
|
@ -104,7 +109,10 @@ impl P2P {
|
|||
node_table.note_failure(&peer.address);
|
||||
connections.remove(peer.id);
|
||||
}
|
||||
}
|
||||
},
|
||||
MessagePoll::WaitingForPeers => {
|
||||
// do nothing
|
||||
},
|
||||
}
|
||||
Ok(())
|
||||
}).then(|_| {
|
||||
|
|
|
@ -1 +1,21 @@
|
|||
mod ping;
|
||||
|
||||
use bytes::Bytes;
|
||||
use message::Error;
|
||||
use message::common::Command;
|
||||
|
||||
pub use self::ping::PingProtocol;
|
||||
|
||||
pub enum ProtocolResult {
|
||||
Reply(Bytes),
|
||||
Error(Error),
|
||||
None,
|
||||
Disconnect,
|
||||
}
|
||||
|
||||
pub trait Protocol {
|
||||
/// Initialize the protocol.
|
||||
fn initialize(&self);
|
||||
/// Handle the message.
|
||||
fn on_message(&self, command: &Command, payload: &Bytes) -> ProtocolResult;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
use bytes::Bytes;
|
||||
use message::types::{Ping, Pong};
|
||||
use message::common::Command;
|
||||
use protocol::{Protocol, ProtocolResult};
|
||||
|
||||
enum PingState {
|
||||
ExpectingPing,
|
||||
ExpectingPong,
|
||||
}
|
||||
|
||||
pub struct PingProtocol {
|
||||
state: PingState,
|
||||
}
|
||||
|
||||
impl Protocol for PingProtocol {
|
||||
fn initialize(&self) {
|
||||
// send ping to the peer
|
||||
}
|
||||
|
||||
fn on_message(&self, command: &Command, payload: &Bytes) -> ProtocolResult {
|
||||
ProtocolResult::None
|
||||
}
|
||||
}
|
||||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
#[macro_use]
|
||||
extern crate clap;
|
||||
extern crate env_logger;
|
||||
|
||||
extern crate keys;
|
||||
extern crate script;
|
||||
|
@ -14,6 +15,7 @@ use std::net::SocketAddr;
|
|||
use p2p::{P2P, event_loop, forever, net};
|
||||
|
||||
fn main() {
|
||||
env_logger::init().unwrap();
|
||||
match run() {
|
||||
Err(err) => println!("{}", err),
|
||||
Ok(_) => (),
|
||||
|
|
400
tools/graph.dot
400
tools/graph.dot
|
@ -2,69 +2,77 @@ digraph dependencies {
|
|||
N0[label="pbtc",shape=box];
|
||||
N1[label="clap",shape=box];
|
||||
N2[label="db",shape=box];
|
||||
N3[label="keys",shape=box];
|
||||
N4[label="message",shape=box];
|
||||
N5[label="miner",shape=box];
|
||||
N6[label="p2p",shape=box];
|
||||
N7[label="script",shape=box];
|
||||
N8[label="ansi_term",shape=box];
|
||||
N9[label="arrayvec",shape=box];
|
||||
N10[label="nodrop",shape=box];
|
||||
N11[label="odds",shape=box];
|
||||
N12[label="base58",shape=box];
|
||||
N13[label="bitcrypto",shape=box];
|
||||
N14[label="primitives",shape=box];
|
||||
N15[label="rust-crypto",shape=box];
|
||||
N16[label="bitflags v0.4.0",shape=box];
|
||||
N17[label="bitflags v0.7.0",shape=box];
|
||||
N18[label="byteorder",shape=box];
|
||||
N19[label="cfg-if",shape=box];
|
||||
N20[label="chain",shape=box];
|
||||
N21[label="rustc-serialize",shape=box];
|
||||
N22[label="serialization",shape=box];
|
||||
N23[label="libc",shape=box];
|
||||
N24[label="strsim",shape=box];
|
||||
N25[label="term_size",shape=box];
|
||||
N26[label="unicode-segmentation",shape=box];
|
||||
N27[label="unicode-width",shape=box];
|
||||
N28[label="vec_map",shape=box];
|
||||
N29[label="yaml-rust",shape=box];
|
||||
N30[label="crossbeam",shape=box];
|
||||
N31[label="elastic-array",shape=box];
|
||||
N32[label="ethcore-devtools",shape=box];
|
||||
N33[label="parking_lot",shape=box];
|
||||
N34[label="rocksdb",shape=box];
|
||||
N35[label="deque",shape=box];
|
||||
N36[label="rand",shape=box];
|
||||
N37[label="eth-secp256k1",shape=box];
|
||||
N38[label="gcc",shape=box];
|
||||
N39[label="futures",shape=box];
|
||||
N3[label="env_logger",shape=box];
|
||||
N4[label="keys",shape=box];
|
||||
N5[label="message",shape=box];
|
||||
N6[label="miner",shape=box];
|
||||
N7[label="p2p",shape=box];
|
||||
N8[label="script",shape=box];
|
||||
N9[label="aho-corasick",shape=box];
|
||||
N10[label="memchr",shape=box];
|
||||
N11[label="ansi_term",shape=box];
|
||||
N12[label="arrayvec",shape=box];
|
||||
N13[label="nodrop",shape=box];
|
||||
N14[label="odds",shape=box];
|
||||
N15[label="base58",shape=box];
|
||||
N16[label="bitcrypto",shape=box];
|
||||
N17[label="primitives",shape=box];
|
||||
N18[label="rust-crypto",shape=box];
|
||||
N19[label="bitflags v0.4.0",shape=box];
|
||||
N20[label="bitflags v0.7.0",shape=box];
|
||||
N21[label="byteorder",shape=box];
|
||||
N22[label="cfg-if",shape=box];
|
||||
N23[label="chain",shape=box];
|
||||
N24[label="rustc-serialize",shape=box];
|
||||
N25[label="serialization",shape=box];
|
||||
N26[label="libc",shape=box];
|
||||
N27[label="strsim",shape=box];
|
||||
N28[label="term_size",shape=box];
|
||||
N29[label="unicode-segmentation",shape=box];
|
||||
N30[label="unicode-width",shape=box];
|
||||
N31[label="vec_map",shape=box];
|
||||
N32[label="yaml-rust",shape=box];
|
||||
N33[label="crossbeam",shape=box];
|
||||
N34[label="elastic-array",shape=box];
|
||||
N35[label="ethcore-devtools",shape=box];
|
||||
N36[label="parking_lot",shape=box];
|
||||
N37[label="rocksdb",shape=box];
|
||||
N38[label="deque",shape=box];
|
||||
N39[label="rand",shape=box];
|
||||
N40[label="log",shape=box];
|
||||
N41[label="futures-cpupool",shape=box];
|
||||
N42[label="num_cpus v1.1.0",shape=box];
|
||||
N43[label="rayon",shape=box];
|
||||
N44[label="kernel32-sys",shape=box];
|
||||
N45[label="winapi",shape=box];
|
||||
N46[label="winapi-build",shape=box];
|
||||
N47[label="lazy_static",shape=box];
|
||||
N48[label="lazycell",shape=box];
|
||||
N49[label="mio",shape=box];
|
||||
N50[label="miow",shape=box];
|
||||
N51[label="net2",shape=box];
|
||||
N52[label="nix",shape=box];
|
||||
N53[label="slab",shape=box];
|
||||
N54[label="ws2_32-sys",shape=box];
|
||||
N55[label="rustc_version",shape=box];
|
||||
N56[label="semver",shape=box];
|
||||
N57[label="void",shape=box];
|
||||
N58[label="num_cpus v0.2.13",shape=box];
|
||||
N59[label="owning_ref",shape=box];
|
||||
N60[label="time",shape=box];
|
||||
N61[label="tokio-core",shape=box];
|
||||
N62[label="parking_lot_core",shape=box];
|
||||
N63[label="smallvec",shape=box];
|
||||
N64[label="rocksdb-sys",shape=box];
|
||||
N65[label="scoped-tls",shape=box];
|
||||
N41[label="regex",shape=box];
|
||||
N42[label="eth-secp256k1",shape=box];
|
||||
N43[label="gcc",shape=box];
|
||||
N44[label="futures",shape=box];
|
||||
N45[label="futures-cpupool",shape=box];
|
||||
N46[label="num_cpus v1.1.0",shape=box];
|
||||
N47[label="rayon",shape=box];
|
||||
N48[label="kernel32-sys",shape=box];
|
||||
N49[label="winapi",shape=box];
|
||||
N50[label="winapi-build",shape=box];
|
||||
N51[label="lazy_static",shape=box];
|
||||
N52[label="lazycell",shape=box];
|
||||
N53[label="mio",shape=box];
|
||||
N54[label="miow",shape=box];
|
||||
N55[label="net2",shape=box];
|
||||
N56[label="nix",shape=box];
|
||||
N57[label="slab",shape=box];
|
||||
N58[label="ws2_32-sys",shape=box];
|
||||
N59[label="rustc_version",shape=box];
|
||||
N60[label="semver",shape=box];
|
||||
N61[label="void",shape=box];
|
||||
N62[label="num_cpus v0.2.13",shape=box];
|
||||
N63[label="owning_ref",shape=box];
|
||||
N64[label="time",shape=box];
|
||||
N65[label="tokio-core",shape=box];
|
||||
N66[label="parking_lot_core",shape=box];
|
||||
N67[label="smallvec",shape=box];
|
||||
N68[label="regex-syntax",shape=box];
|
||||
N69[label="thread_local",shape=box];
|
||||
N70[label="utf8-ranges",shape=box];
|
||||
N71[label="rocksdb-sys",shape=box];
|
||||
N72[label="scoped-tls",shape=box];
|
||||
N73[label="thread-id",shape=box];
|
||||
N0 -> N1[label="",style=dashed];
|
||||
N0 -> N2[label="",style=dashed];
|
||||
N0 -> N3[label="",style=dashed];
|
||||
|
@ -72,136 +80,150 @@ digraph dependencies {
|
|||
N0 -> N5[label="",style=dashed];
|
||||
N0 -> N6[label="",style=dashed];
|
||||
N0 -> N7[label="",style=dashed];
|
||||
N1 -> N8[label="",style=dashed];
|
||||
N1 -> N17[label="",style=dashed];
|
||||
N1 -> N23[label="",style=dashed];
|
||||
N1 -> N24[label="",style=dashed];
|
||||
N1 -> N25[label="",style=dashed];
|
||||
N0 -> N8[label="",style=dashed];
|
||||
N1 -> N11[label="",style=dashed];
|
||||
N1 -> N20[label="",style=dashed];
|
||||
N1 -> N26[label="",style=dashed];
|
||||
N1 -> N27[label="",style=dashed];
|
||||
N1 -> N28[label="",style=dashed];
|
||||
N1 -> N29[label="",style=dashed];
|
||||
N2 -> N14[label="",style=dashed];
|
||||
N2 -> N18[label="",style=dashed];
|
||||
N2 -> N20[label="",style=dashed];
|
||||
N2 -> N22[label="",style=dashed];
|
||||
N2 -> N31[label="",style=dashed];
|
||||
N2 -> N32[label="",style=dashed];
|
||||
N2 -> N33[label="",style=dashed];
|
||||
N1 -> N30[label="",style=dashed];
|
||||
N1 -> N31[label="",style=dashed];
|
||||
N1 -> N32[label="",style=dashed];
|
||||
N2 -> N17[label="",style=dashed];
|
||||
N2 -> N21[label="",style=dashed];
|
||||
N2 -> N23[label="",style=dashed];
|
||||
N2 -> N25[label="",style=dashed];
|
||||
N2 -> N34[label="",style=dashed];
|
||||
N3 -> N12[label="",style=dashed];
|
||||
N3 -> N13[label="",style=dashed];
|
||||
N3 -> N14[label="",style=dashed];
|
||||
N3 -> N21[label="",style=dashed];
|
||||
N3 -> N36[label="",style=dashed];
|
||||
N3 -> N37[label="",style=dashed];
|
||||
N3 -> N47[label="",style=dashed];
|
||||
N4 -> N13[label="",style=dashed];
|
||||
N4 -> N14[label="",style=dashed];
|
||||
N4 -> N18[label="",style=dashed];
|
||||
N4 -> N20[label="",style=dashed];
|
||||
N4 -> N22[label="",style=dashed];
|
||||
N5 -> N14[label="",style=dashed];
|
||||
N5 -> N20[label="",style=dashed];
|
||||
N5 -> N22[label="",style=dashed];
|
||||
N6 -> N4[label="",style=dashed];
|
||||
N6 -> N13[label="",style=dashed];
|
||||
N6 -> N14[label="",style=dashed];
|
||||
N6 -> N33[label="",style=dashed];
|
||||
N6 -> N36[label="",style=dashed];
|
||||
N6 -> N39[label="",style=dashed];
|
||||
N6 -> N41[label="",style=dashed];
|
||||
N6 -> N60[label="",style=dashed];
|
||||
N6 -> N61[label="",style=dashed];
|
||||
N7 -> N3[label="",style=dashed];
|
||||
N7 -> N13[label="",style=dashed];
|
||||
N7 -> N14[label="",style=dashed];
|
||||
N7 -> N20[label="",style=dashed];
|
||||
N7 -> N22[label="",style=dashed];
|
||||
N9 -> N10[label=""];
|
||||
N9 -> N11[label=""];
|
||||
N10 -> N11[label=""];
|
||||
N13 -> N14[label="",style=dashed];
|
||||
N13 -> N15[label="",style=dashed];
|
||||
N14 -> N21[label="",style=dashed];
|
||||
N15 -> N21[label="",style=dashed];
|
||||
N15 -> N23[label="",style=dashed];
|
||||
N15 -> N36[label="",style=dashed];
|
||||
N15 -> N38[label="",style=dashed];
|
||||
N15 -> N60[label="",style=dashed];
|
||||
N20 -> N13[label="",style=dashed];
|
||||
N20 -> N14[label="",style=dashed];
|
||||
N20 -> N21[label="",style=dashed];
|
||||
N20 -> N22[label="",style=dashed];
|
||||
N22 -> N14[label="",style=dashed];
|
||||
N22 -> N18[label="",style=dashed];
|
||||
N25 -> N23[label="",style=dashed];
|
||||
N25 -> N44[label="",style=dashed];
|
||||
N25 -> N45[label="",style=dashed];
|
||||
N32 -> N36[label="",style=dashed];
|
||||
N33 -> N59[label="",style=dashed];
|
||||
N33 -> N62[label="",style=dashed];
|
||||
N34 -> N23[label="",style=dashed];
|
||||
N34 -> N64[label="",style=dashed];
|
||||
N35 -> N36[label="",style=dashed];
|
||||
N36 -> N23[label="",style=dashed];
|
||||
N37 -> N9[label="",style=dashed];
|
||||
N37 -> N21[label="",style=dashed];
|
||||
N37 -> N23[label="",style=dashed];
|
||||
N37 -> N36[label="",style=dashed];
|
||||
N37 -> N38[label="",style=dashed];
|
||||
N38 -> N43[label="",style=dashed];
|
||||
N39 -> N40[label="",style=dashed];
|
||||
N41 -> N30[label="",style=dashed];
|
||||
N41 -> N39[label="",style=dashed];
|
||||
N41 -> N42[label="",style=dashed];
|
||||
N42 -> N23[label="",style=dashed];
|
||||
N43 -> N35[label="",style=dashed];
|
||||
N43 -> N36[label="",style=dashed];
|
||||
N43 -> N58[label="",style=dashed];
|
||||
N44 -> N45[label="",style=dashed];
|
||||
N44 -> N46[label="",style=dashed];
|
||||
N49 -> N23[label="",style=dashed];
|
||||
N49 -> N40[label="",style=dashed];
|
||||
N49 -> N44[label="",style=dashed];
|
||||
N49 -> N45[label="",style=dashed];
|
||||
N49 -> N48[label=""];
|
||||
N49 -> N50[label=""];
|
||||
N49 -> N51[label=""];
|
||||
N49 -> N52[label=""];
|
||||
N49 -> N53[label="",style=dashed];
|
||||
N50 -> N44[label=""];
|
||||
N50 -> N45[label=""];
|
||||
N50 -> N51[label=""];
|
||||
N50 -> N54[label=""];
|
||||
N51 -> N19[label=""];
|
||||
N51 -> N23[label=""];
|
||||
N51 -> N44[label=""];
|
||||
N51 -> N45[label=""];
|
||||
N51 -> N54[label=""];
|
||||
N52 -> N16[label=""];
|
||||
N52 -> N19[label=""];
|
||||
N52 -> N23[label=""];
|
||||
N52 -> N55[label=""];
|
||||
N52 -> N56[label=""];
|
||||
N52 -> N57[label=""];
|
||||
N54 -> N45[label=""];
|
||||
N54 -> N46[label=""];
|
||||
N55 -> N56[label=""];
|
||||
N58 -> N23[label="",style=dashed];
|
||||
N60 -> N23[label="",style=dashed];
|
||||
N60 -> N44[label="",style=dashed];
|
||||
N60 -> N45[label="",style=dashed];
|
||||
N61 -> N39[label="",style=dashed];
|
||||
N61 -> N40[label="",style=dashed];
|
||||
N61 -> N49[label="",style=dashed];
|
||||
N61 -> N53[label="",style=dashed];
|
||||
N61 -> N65[label="",style=dashed];
|
||||
N62 -> N23[label="",style=dashed];
|
||||
N62 -> N36[label="",style=dashed];
|
||||
N62 -> N44[label="",style=dashed];
|
||||
N62 -> N45[label="",style=dashed];
|
||||
N62 -> N63[label="",style=dashed];
|
||||
N64 -> N23[label="",style=dashed];
|
||||
N64 -> N38[label="",style=dashed];
|
||||
N2 -> N35[label="",style=dashed];
|
||||
N2 -> N36[label="",style=dashed];
|
||||
N2 -> N37[label="",style=dashed];
|
||||
N3 -> N40[label="",style=dashed];
|
||||
N3 -> N41[label="",style=dashed];
|
||||
N4 -> N15[label="",style=dashed];
|
||||
N4 -> N16[label="",style=dashed];
|
||||
N4 -> N17[label="",style=dashed];
|
||||
N4 -> N24[label="",style=dashed];
|
||||
N4 -> N39[label="",style=dashed];
|
||||
N4 -> N42[label="",style=dashed];
|
||||
N4 -> N51[label="",style=dashed];
|
||||
N5 -> N16[label="",style=dashed];
|
||||
N5 -> N17[label="",style=dashed];
|
||||
N5 -> N21[label="",style=dashed];
|
||||
N5 -> N23[label="",style=dashed];
|
||||
N5 -> N25[label="",style=dashed];
|
||||
N6 -> N17[label="",style=dashed];
|
||||
N6 -> N23[label="",style=dashed];
|
||||
N6 -> N25[label="",style=dashed];
|
||||
N7 -> N5[label="",style=dashed];
|
||||
N7 -> N16[label="",style=dashed];
|
||||
N7 -> N17[label="",style=dashed];
|
||||
N7 -> N36[label="",style=dashed];
|
||||
N7 -> N39[label="",style=dashed];
|
||||
N7 -> N40[label="",style=dashed];
|
||||
N7 -> N44[label="",style=dashed];
|
||||
N7 -> N45[label="",style=dashed];
|
||||
N7 -> N64[label="",style=dashed];
|
||||
N7 -> N65[label="",style=dashed];
|
||||
N8 -> N4[label="",style=dashed];
|
||||
N8 -> N16[label="",style=dashed];
|
||||
N8 -> N17[label="",style=dashed];
|
||||
N8 -> N23[label="",style=dashed];
|
||||
N8 -> N25[label="",style=dashed];
|
||||
N9 -> N10[label="",style=dashed];
|
||||
N10 -> N26[label="",style=dashed];
|
||||
N12 -> N13[label=""];
|
||||
N12 -> N14[label=""];
|
||||
N13 -> N14[label=""];
|
||||
N16 -> N17[label="",style=dashed];
|
||||
N16 -> N18[label="",style=dashed];
|
||||
N17 -> N24[label="",style=dashed];
|
||||
N18 -> N24[label="",style=dashed];
|
||||
N18 -> N26[label="",style=dashed];
|
||||
N18 -> N39[label="",style=dashed];
|
||||
N18 -> N43[label="",style=dashed];
|
||||
N18 -> N64[label="",style=dashed];
|
||||
N23 -> N16[label="",style=dashed];
|
||||
N23 -> N17[label="",style=dashed];
|
||||
N23 -> N24[label="",style=dashed];
|
||||
N23 -> N25[label="",style=dashed];
|
||||
N25 -> N17[label="",style=dashed];
|
||||
N25 -> N21[label="",style=dashed];
|
||||
N28 -> N26[label="",style=dashed];
|
||||
N28 -> N48[label="",style=dashed];
|
||||
N28 -> N49[label="",style=dashed];
|
||||
N35 -> N39[label="",style=dashed];
|
||||
N36 -> N63[label="",style=dashed];
|
||||
N36 -> N66[label="",style=dashed];
|
||||
N37 -> N26[label="",style=dashed];
|
||||
N37 -> N71[label="",style=dashed];
|
||||
N38 -> N39[label="",style=dashed];
|
||||
N39 -> N26[label="",style=dashed];
|
||||
N41 -> N9[label="",style=dashed];
|
||||
N41 -> N10[label="",style=dashed];
|
||||
N41 -> N68[label="",style=dashed];
|
||||
N41 -> N69[label="",style=dashed];
|
||||
N41 -> N70[label="",style=dashed];
|
||||
N42 -> N12[label="",style=dashed];
|
||||
N42 -> N24[label="",style=dashed];
|
||||
N42 -> N26[label="",style=dashed];
|
||||
N42 -> N39[label="",style=dashed];
|
||||
N42 -> N43[label="",style=dashed];
|
||||
N43 -> N47[label="",style=dashed];
|
||||
N44 -> N40[label="",style=dashed];
|
||||
N45 -> N33[label="",style=dashed];
|
||||
N45 -> N44[label="",style=dashed];
|
||||
N45 -> N46[label="",style=dashed];
|
||||
N46 -> N26[label="",style=dashed];
|
||||
N47 -> N38[label="",style=dashed];
|
||||
N47 -> N39[label="",style=dashed];
|
||||
N47 -> N62[label="",style=dashed];
|
||||
N48 -> N49[label="",style=dashed];
|
||||
N48 -> N50[label="",style=dashed];
|
||||
N53 -> N26[label="",style=dashed];
|
||||
N53 -> N40[label="",style=dashed];
|
||||
N53 -> N48[label="",style=dashed];
|
||||
N53 -> N49[label="",style=dashed];
|
||||
N53 -> N52[label=""];
|
||||
N53 -> N54[label=""];
|
||||
N53 -> N55[label=""];
|
||||
N53 -> N56[label=""];
|
||||
N53 -> N57[label="",style=dashed];
|
||||
N54 -> N48[label=""];
|
||||
N54 -> N49[label=""];
|
||||
N54 -> N55[label=""];
|
||||
N54 -> N58[label=""];
|
||||
N55 -> N22[label=""];
|
||||
N55 -> N26[label=""];
|
||||
N55 -> N48[label=""];
|
||||
N55 -> N49[label=""];
|
||||
N55 -> N58[label=""];
|
||||
N56 -> N19[label=""];
|
||||
N56 -> N22[label=""];
|
||||
N56 -> N26[label=""];
|
||||
N56 -> N59[label=""];
|
||||
N56 -> N60[label=""];
|
||||
N56 -> N61[label=""];
|
||||
N58 -> N49[label=""];
|
||||
N58 -> N50[label=""];
|
||||
N59 -> N60[label=""];
|
||||
N62 -> N26[label="",style=dashed];
|
||||
N64 -> N26[label="",style=dashed];
|
||||
N64 -> N48[label="",style=dashed];
|
||||
N64 -> N49[label="",style=dashed];
|
||||
N65 -> N40[label="",style=dashed];
|
||||
N65 -> N44[label="",style=dashed];
|
||||
N65 -> N53[label="",style=dashed];
|
||||
N65 -> N57[label="",style=dashed];
|
||||
N65 -> N72[label="",style=dashed];
|
||||
N66 -> N26[label="",style=dashed];
|
||||
N66 -> N39[label="",style=dashed];
|
||||
N66 -> N48[label="",style=dashed];
|
||||
N66 -> N49[label="",style=dashed];
|
||||
N66 -> N67[label="",style=dashed];
|
||||
N69 -> N73[label="",style=dashed];
|
||||
N71 -> N26[label="",style=dashed];
|
||||
N71 -> N43[label="",style=dashed];
|
||||
N73 -> N26[label="",style=dashed];
|
||||
N73 -> N48[label="",style=dashed];
|
||||
}
|
||||
|
|
BIN
tools/graph.png
BIN
tools/graph.png
Binary file not shown.
Before Width: | Height: | Size: 438 KiB After Width: | Height: | Size: 478 KiB |
Loading…
Reference in New Issue