pass version message to sync

This commit is contained in:
Svyatoslav Nikolsky 2017-01-11 17:54:30 +03:00
parent da07809721
commit 7c3bf1731c
8 changed files with 18 additions and 24 deletions

View File

@ -6,7 +6,7 @@ use ser::{
};
use common::{Port, IpAddress, Services};
#[derive(Debug, Default, PartialEq)]
#[derive(Debug, Default, PartialEq, Clone)]
pub struct NetAddress {
pub services: Services,
pub address: IpAddress,

View File

@ -8,7 +8,7 @@ use common::{NetAddress, Services};
use {Payload, MessageResult};
use serialization::deserialize_payload;
#[derive(Debug, PartialEq)]
#[derive(Debug, PartialEq, Clone)]
pub enum Version {
V0(V0),
V106(V0, V106),
@ -94,7 +94,7 @@ impl Version {
}
}
#[derive(Debug, Default, PartialEq)]
#[derive(Debug, Default, PartialEq, Clone)]
pub struct V0 {
pub version: u32,
pub services: Services,
@ -102,7 +102,7 @@ pub struct V0 {
pub receiver: NetAddress,
}
#[derive(Debug, PartialEq)]
#[derive(Debug, PartialEq, Clone)]
pub struct V106 {
pub from: NetAddress,
pub nonce: u64,
@ -110,7 +110,7 @@ pub struct V106 {
pub start_height: i32,
}
#[derive(Debug, PartialEq)]
#[derive(Debug, PartialEq, Clone)]
pub struct V70001 {
pub relay: bool,
}

View File

@ -36,9 +36,10 @@ impl Future for AcceptConnection {
};
let connection = Connection {
stream: stream.into(),
version: result.negotiated_version,
magic: self.magic,
services: result.version.services(),
version: result.negotiated_version,
version_message: result.version,
magic: self.magic,
address: self.address,
};
Ok(Ok(connection).into())

View File

@ -60,9 +60,10 @@ impl Future for Connect {
};
let connection = Connection {
stream: stream.into(),
version: result.negotiated_version,
magic: self.magic,
services: result.version.services(),
version: result.negotiated_version,
version_message: result.version,
magic: self.magic,
address: self.address,
};
(ConnectState::Connected, Async::Ready(Ok(connection)))

View File

@ -1,11 +1,13 @@
use std::net;
use network::Magic;
use message::common::Services;
use message::types;
use io::SharedTcpStream;
pub struct Connection {
pub stream: SharedTcpStream,
pub version: u32,
pub version_message: types::Version,
pub magic: Magic,
pub services: Services,
pub address: net::SocketAddr,

View File

@ -55,6 +55,7 @@ impl Connections {
address: connection.address,
direction: direction,
version: connection.version,
version_message: connection.version_message,
magic: connection.magic,
};

View File

@ -181,20 +181,7 @@ impl SyncProtocol {
impl Protocol for SyncProtocol {
fn initialize(&mut self) {
// TODO
use message::common;
let version = types::Version::V0(types::version::V0 {
version: self.context.info().version,
services: common::Services::default(),
timestamp: 0,
receiver: common::NetAddress {
services: common::Services::default(),
address: common::IpAddress::from("127.0.0.1"),
port: common::Port::from(0),
},
});
self.inbound_connection.start_sync_session(version);
self.inbound_connection.start_sync_session(self.context.info().version_message.clone());
}
fn on_message(&mut self, command: &Command, payload: &Bytes) -> Result<(), Error> {

View File

@ -1,4 +1,5 @@
use std::net::SocketAddr;
use message::types;
use network::Magic;
pub type PeerId = usize;
@ -9,12 +10,13 @@ pub enum Direction {
Outbound,
}
#[derive(Debug, PartialEq, Eq, Clone)]
#[derive(Debug, PartialEq, Clone)]
pub struct PeerInfo {
pub id: PeerId,
pub address: SocketAddr,
pub direction: Direction,
pub version: u32,
pub version_message: types::Version,
pub magic: Magic,
}