Add Inbound/Outbound for connected peers

This commit is contained in:
Quentin Le Sceller 2018-02-23 12:07:22 -05:00
parent 05d1c6c817
commit b6a28ea16f
2 changed files with 14 additions and 2 deletions

View file

@ -99,6 +99,7 @@ impl Handshake {
addr: peer_addr, addr: peer_addr,
version: shake.version, version: shake.version,
total_difficulty: shake.total_difficulty, total_difficulty: shake.total_difficulty,
direction: Direction::Outbound,
}; };
// If denied then we want to close the connection // If denied then we want to close the connection
@ -106,7 +107,7 @@ impl Handshake {
if Peer::is_denied(&self.config, &peer_info.addr) { if Peer::is_denied(&self.config, &peer_info.addr) {
return Err(Error::ConnectionClose); return Err(Error::ConnectionClose);
} }
debug!( debug!(
LOGGER, LOGGER,
"Connected! Cumulative {} offered from {:?} {:?} {:?}", "Connected! Cumulative {} offered from {:?} {:?} {:?}",
@ -127,7 +128,7 @@ impl Handshake {
) -> Result<PeerInfo, Error> { ) -> Result<PeerInfo, Error> {
let hand: Hand = read_message(conn, Type::Hand)?; let hand: Hand = read_message(conn, Type::Hand)?;
// all the reasons we could refuse this connection for // all the reasons we could refuse this connection for
if hand.version != PROTOCOL_VERSION { if hand.version != PROTOCOL_VERSION {
return Err(Error::ProtocolMismatch { return Err(Error::ProtocolMismatch {
@ -154,6 +155,7 @@ impl Handshake {
addr: extract_ip(&hand.sender_addr.0, &conn), addr: extract_ip(&hand.sender_addr.0, &conn),
version: hand.version, version: hand.version,
total_difficulty: hand.total_difficulty, total_difficulty: hand.total_difficulty,
direction: Direction::Inbound,
}; };
// At this point we know the published ip and port of the peer // At this point we know the published ip and port of the peer

View file

@ -123,6 +123,15 @@ bitflags! {
} }
} }
/// Types of connection
enum_from_primitive! {
#[derive(Debug, Clone, Copy, PartialEq, Serialize, Deserialize)]
pub enum Direction {
Inbound,
Outbound,
}
}
/// General information about a connected peer that's useful to other modules. /// General information about a connected peer that's useful to other modules.
#[derive(Clone, Debug, Serialize, Deserialize)] #[derive(Clone, Debug, Serialize, Deserialize)]
pub struct PeerInfo { pub struct PeerInfo {
@ -131,6 +140,7 @@ pub struct PeerInfo {
pub version: u32, pub version: u32,
pub addr: SocketAddr, pub addr: SocketAddr,
pub total_difficulty: Difficulty, pub total_difficulty: Difficulty,
pub direction: Direction,
} }
/// The full sumtree data along with indexes required for a consumer to /// The full sumtree data along with indexes required for a consumer to