renamed Services
This commit is contained in:
parent
f7bfa16195
commit
e039068772
|
@ -3,11 +3,11 @@ use ser::{
|
||||||
Stream, Serializable,
|
Stream, Serializable,
|
||||||
Reader, Deserializable, Error as ReaderError, deserialize,
|
Reader, Deserializable, Error as ReaderError, deserialize,
|
||||||
};
|
};
|
||||||
use common::{Port, IpAddress, ServiceFlags};
|
use common::{Port, IpAddress, Services};
|
||||||
|
|
||||||
#[derive(Debug, PartialEq)]
|
#[derive(Debug, PartialEq)]
|
||||||
pub struct NetAddress {
|
pub struct NetAddress {
|
||||||
pub services: ServiceFlags,
|
pub services: Services,
|
||||||
pub address: IpAddress,
|
pub address: IpAddress,
|
||||||
pub port: Port,
|
pub port: Port,
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,7 @@ impl From<&'static str> for NetAddress {
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use ser::{serialize, deserialize};
|
use ser::{serialize, deserialize};
|
||||||
use common::ServiceFlags;
|
use common::Services;
|
||||||
use super::NetAddress;
|
use super::NetAddress;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
@ -54,7 +54,7 @@ mod tests {
|
||||||
].into();
|
].into();
|
||||||
|
|
||||||
let address = NetAddress {
|
let address = NetAddress {
|
||||||
services: ServiceFlags::default().with_network(true),
|
services: Services::default().with_network(true),
|
||||||
address: "::ffff:a00:1".into(),
|
address: "::ffff:a00:1".into(),
|
||||||
port: 8333.into(),
|
port: 8333.into(),
|
||||||
};
|
};
|
||||||
|
@ -71,7 +71,7 @@ mod tests {
|
||||||
];
|
];
|
||||||
|
|
||||||
let expected = NetAddress {
|
let expected = NetAddress {
|
||||||
services: ServiceFlags::default().with_network(true),
|
services: Services::default().with_network(true),
|
||||||
address: "::ffff:a00:1".into(),
|
address: "::ffff:a00:1".into(),
|
||||||
port: 8333.into(),
|
port: 8333.into(),
|
||||||
};
|
};
|
||||||
|
@ -82,7 +82,7 @@ mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn test_net_address_from_static_str() {
|
fn test_net_address_from_static_str() {
|
||||||
let expected = NetAddress {
|
let expected = NetAddress {
|
||||||
services: ServiceFlags::default().with_network(true),
|
services: Services::default().with_network(true),
|
||||||
address: "::ffff:a00:1".into(),
|
address: "::ffff:a00:1".into(),
|
||||||
port: 8333.into(),
|
port: 8333.into(),
|
||||||
|
|
||||||
|
|
|
@ -20,4 +20,4 @@ pub use self::ip::IpAddress;
|
||||||
pub use self::magic::Magic;
|
pub use self::magic::Magic;
|
||||||
pub use self::port::Port;
|
pub use self::port::Port;
|
||||||
pub use self::prefilled_transaction::PrefilledTransaction;
|
pub use self::prefilled_transaction::PrefilledTransaction;
|
||||||
pub use self::service::ServiceFlags;
|
pub use self::service::Services;
|
||||||
|
|
|
@ -4,22 +4,22 @@ use ser::{
|
||||||
};
|
};
|
||||||
|
|
||||||
#[derive(Debug, Default, PartialEq, Clone, Copy)]
|
#[derive(Debug, Default, PartialEq, Clone, Copy)]
|
||||||
pub struct ServiceFlags(u64);
|
pub struct Services(u64);
|
||||||
|
|
||||||
impl From<ServiceFlags> for u64 {
|
impl From<Services> for u64 {
|
||||||
fn from(s: ServiceFlags) -> Self {
|
fn from(s: Services) -> Self {
|
||||||
s.0
|
s.0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<u64> for ServiceFlags {
|
impl From<u64> for Services {
|
||||||
fn from(v: u64) -> Self {
|
fn from(v: u64) -> Self {
|
||||||
ServiceFlags(v)
|
Services(v)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
impl ServiceFlags {
|
impl Services {
|
||||||
pub fn network(&self) -> bool {
|
pub fn network(&self) -> bool {
|
||||||
self.bit_at(0)
|
self.bit_at(0)
|
||||||
}
|
}
|
||||||
|
@ -78,14 +78,14 @@ impl ServiceFlags {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Serializable for ServiceFlags {
|
impl Serializable for Services {
|
||||||
fn serialize(&self, stream: &mut Stream) {
|
fn serialize(&self, stream: &mut Stream) {
|
||||||
stream.append(&self.0);
|
stream.append(&self.0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Deserializable for ServiceFlags {
|
impl Deserializable for Services {
|
||||||
fn deserialize(reader: &mut Reader) -> Result<Self, ReaderError> where Self: Sized {
|
fn deserialize(reader: &mut Reader) -> Result<Self, ReaderError> where Self: Sized {
|
||||||
reader.read().map(ServiceFlags)
|
reader.read().map(Services)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@ use ser::{
|
||||||
Serializable, Stream,
|
Serializable, Stream,
|
||||||
Deserializable, Reader, Error as ReaderError,
|
Deserializable, Reader, Error as ReaderError,
|
||||||
};
|
};
|
||||||
use common::{NetAddress, ServiceFlags};
|
use common::{NetAddress, Services};
|
||||||
use {Payload, MessageResult};
|
use {Payload, MessageResult};
|
||||||
use serialization::deserialize_payload;
|
use serialization::deserialize_payload;
|
||||||
|
|
||||||
|
@ -70,7 +70,7 @@ impl Version {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn services(&self) -> ServiceFlags {
|
pub fn services(&self) -> Services {
|
||||||
match *self {
|
match *self {
|
||||||
Version::V0(ref s) => s.services,
|
Version::V0(ref s) => s.services,
|
||||||
Version::V106(ref s, _) => s.services,
|
Version::V106(ref s, _) => s.services,
|
||||||
|
@ -82,7 +82,7 @@ impl Version {
|
||||||
#[derive(Debug, PartialEq)]
|
#[derive(Debug, PartialEq)]
|
||||||
pub struct V0 {
|
pub struct V0 {
|
||||||
pub version: u32,
|
pub version: u32,
|
||||||
pub services: ServiceFlags,
|
pub services: Services,
|
||||||
pub timestamp: i64,
|
pub timestamp: i64,
|
||||||
pub receiver: NetAddress,
|
pub receiver: NetAddress,
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,10 +3,20 @@ use net::Config as NetConfig;
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct Config {
|
pub struct Config {
|
||||||
|
/// Number of threads used by p2p thread pool.
|
||||||
|
pub threads: usize,
|
||||||
|
/// Lowest supported protocol version.
|
||||||
|
pub protocol_minimum: u32,
|
||||||
|
/// Highest supported protocol version.
|
||||||
|
pub protocol_maximum: u32,
|
||||||
|
/// Number of inbound connections.
|
||||||
|
pub inbound_connections: usize,
|
||||||
|
/// Number of outbound connections.
|
||||||
|
pub outbound_connections: usize,
|
||||||
/// Configuration for every connection.
|
/// Configuration for every connection.
|
||||||
pub connection: NetConfig,
|
pub connection: NetConfig,
|
||||||
/// Connect to these nodes to retrieve peer addresses, and disconnect.
|
|
||||||
pub seednodes: Vec<IpAddr>,
|
|
||||||
/// Connect only ot these nodes.
|
/// Connect only ot these nodes.
|
||||||
pub limited_connect: Option<Vec<IpAddr>>,
|
pub peers: Vec<IpAddr>,
|
||||||
|
/// Connect to these nodes to retrieve peer addresses, and disconnect.
|
||||||
|
pub seeds: Vec<IpAddr>,
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
use std::net::SocketAddr;
|
use std::net::SocketAddr;
|
||||||
use message::common::{Magic, ServiceFlags, NetAddress};
|
use message::common::{Magic, Services, NetAddress};
|
||||||
use message::types::version::{Version, V0, V106, V70001};
|
use message::types::version::{Version, V0, V106, V70001};
|
||||||
use util::time::{Time, RealTime};
|
use util::time::{Time, RealTime};
|
||||||
use util::nonce::{NonceGenerator, RandomNonce};
|
use util::nonce::{NonceGenerator, RandomNonce};
|
||||||
|
@ -9,7 +9,7 @@ use VERSION;
|
||||||
pub struct Config {
|
pub struct Config {
|
||||||
pub magic: Magic,
|
pub magic: Magic,
|
||||||
pub local_address: SocketAddr,
|
pub local_address: SocketAddr,
|
||||||
pub services: ServiceFlags,
|
pub services: Services,
|
||||||
pub user_agent: String,
|
pub user_agent: String,
|
||||||
pub start_height: i32,
|
pub start_height: i32,
|
||||||
pub relay: bool,
|
pub relay: bool,
|
||||||
|
|
|
@ -23,7 +23,7 @@ pub struct P2P {
|
||||||
|
|
||||||
impl P2P {
|
impl P2P {
|
||||||
pub fn new(config: Config, handle: Handle) -> Self {
|
pub fn new(config: Config, handle: Handle) -> Self {
|
||||||
let pool = CpuPool::new(4);
|
let pool = CpuPool::new(config.threads);
|
||||||
|
|
||||||
P2P {
|
P2P {
|
||||||
event_loop_handle: handle.clone(),
|
event_loop_handle: handle.clone(),
|
||||||
|
@ -35,7 +35,7 @@ impl P2P {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn run(&self) -> Result<(), io::Error> {
|
pub fn run(&self) -> Result<(), io::Error> {
|
||||||
for seednode in self.config.seednodes.iter() {
|
for seednode in self.config.peers.iter() {
|
||||||
self.connect(*seednode)
|
self.connect(*seednode)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,11 @@
|
||||||
mod manual;
|
mod manual;
|
||||||
mod normal;
|
mod normal;
|
||||||
mod seednode;
|
mod seednode;
|
||||||
|
|
||||||
|
pub enum SessionState {
|
||||||
|
Connected,
|
||||||
|
AcceptedConnection,
|
||||||
|
SentGetAddr,
|
||||||
|
Closing,
|
||||||
|
Idle,
|
||||||
|
}
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
pub mod nonce;
|
pub mod nonce;
|
||||||
pub mod time;
|
pub mod time;
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,11 @@ fn run() -> Result<(), String> {
|
||||||
let mut el = event_loop();
|
let mut el = event_loop();
|
||||||
|
|
||||||
let p2p_cfg = p2p::Config {
|
let p2p_cfg = p2p::Config {
|
||||||
|
threads: 4,
|
||||||
|
protocol_minimum: 70001,
|
||||||
|
protocol_maximum: 70017,
|
||||||
|
inbound_connections: 10,
|
||||||
|
outbound_connections: 10,
|
||||||
connection: net::Config {
|
connection: net::Config {
|
||||||
magic: cfg.magic,
|
magic: cfg.magic,
|
||||||
local_address: SocketAddr::new("127.0.0.1".parse().unwrap(), cfg.port),
|
local_address: SocketAddr::new("127.0.0.1".parse().unwrap(), cfg.port),
|
||||||
|
@ -36,8 +41,8 @@ fn run() -> Result<(), String> {
|
||||||
start_height: 0,
|
start_height: 0,
|
||||||
relay: false,
|
relay: false,
|
||||||
},
|
},
|
||||||
seednodes: cfg.seednode.map_or_else(|| vec![], |x| vec![x]),
|
peers: cfg.connect.map_or_else(|| vec![], |x| vec![x]),
|
||||||
limited_connect: cfg.connect.map_or(None, |x| Some(vec![x])),
|
seeds: cfg.seednode.map_or_else(|| vec![], |x| vec![x]),
|
||||||
};
|
};
|
||||||
|
|
||||||
let p2p = P2P::new(p2p_cfg, el.handle());
|
let p2p = P2P::new(p2p_cfg, el.handle());
|
||||||
|
|
Loading…
Reference in New Issue