Просмотр исходного кода

net: migrate to new AddrMessage format <Url, u64>

lunar-mining 2 лет назад
Родитель
Сommit
a6c74eda87
3 измененных файлов с 36 добавлено и 34 удалено
  1. 9 9
      src/net/message.rs
  2. 23 21
      src/net/protocol/protocol_address.rs
  3. 4 4
      src/net/protocol/protocol_seed.rs

+ 9 - 9
src/net/message.rs

@@ -69,20 +69,20 @@ pub struct GetAddrsMessage {
 }
 impl_p2p_message!(GetAddrsMessage, "getaddr");
 
-/// Sends address information to inbound connection.
-/// Response to `GetAddrsMessage`.
-#[derive(Debug, Clone, SerialEncodable, SerialDecodable)]
-pub struct AddrsMessage {
-    pub addrs: Vec<Url>,
-}
-impl_p2p_message!(AddrsMessage, "addr");
+///// Sends address information to inbound connection.
+///// Response to `GetAddrsMessage`.
+//#[derive(Debug, Clone, SerialEncodable, SerialDecodable)]
+//pub struct AddrsMessage {
+//    pub addrs: Vec<Url>,
+//}
+//impl_p2p_message!(AddrsMessage, "addr");
 
 #[derive(Debug, Clone, SerialEncodable, SerialDecodable)]
-pub struct AddrsMessage2 {
+pub struct AddrsMessage {
     pub addrs: Vec<(Url, u64)>,
 }
 
-impl_p2p_message!(AddrsMessage2, "addr2");
+impl_p2p_message!(AddrsMessage, "addr");
 
 /// Requests version information of outbound connection.
 #[derive(Debug, Clone, SerialEncodable, SerialDecodable)]

+ 23 - 21
src/net/protocol/protocol_address.rs

@@ -26,7 +26,7 @@ use super::{
     super::{
         channel::ChannelPtr,
         hosts::HostsPtr,
-        message::{AddrsMessage, AddrsMessage2, GetAddrsMessage},
+        message::{AddrsMessage, GetAddrsMessage},
         message_subscriber::MessageSubscription,
         p2p::P2pPtr,
         session::SESSION_OUTBOUND,
@@ -171,7 +171,7 @@ use crate::{system::sleep, Result};
 // The format of GetAddrMessage remains the same.
 pub struct ProtocolAddress {
     channel: ChannelPtr,
-    addrs_sub: MessageSubscription<AddrsMessage2>,
+    addrs_sub: MessageSubscription<AddrsMessage>,
     get_addrs_sub: MessageSubscription<GetAddrsMessage>,
     hosts: HostsPtr,
     settings: SettingsPtr,
@@ -187,7 +187,7 @@ impl ProtocolAddress {
 
         // Creates a subscription to address message
         let addrs_sub =
-            channel.subscribe_msg::<AddrsMessage2>().await.expect("Missing addrs dispatcher!");
+            channel.subscribe_msg::<AddrsMessage>().await.expect("Missing addrs dispatcher!");
 
         // Creates a subscription to get-address message
         let get_addrs_sub =
@@ -240,7 +240,7 @@ impl ProtocolAddress {
             //       plus their mixing.
             if get_addrs_msg.transports.len() > 20 {
                 // TODO: Should this error out, effectively ending the connection?
-                let addrs_msg = AddrsMessage2 { addrs: vec![] };
+                let addrs_msg = AddrsMessage { addrs: vec![] };
                 self.channel.send(&addrs_msg).await?;
                 continue
             }
@@ -266,24 +266,26 @@ impl ProtocolAddress {
                 "Sending {} addresses to {}", addrs.len(), self.channel.address(),
             );
 
-            let addrs_msg = AddrsMessage2 { addrs };
+            let addrs_msg = AddrsMessage { addrs };
             self.channel.send(&addrs_msg).await?;
         }
     }
 
-    async fn send_my_addrs(self: Arc<Self>) -> Result<()> {
-        debug!(
-            target: "net::protocol_address::send_my_addrs()",
-            "[START] address={}", self.channel.address(),
-        );
+    // We ignore this method for now as it's not part of the new protocol.
+    // TODO: evaluate whether we need to reimplement this.
+    //async fn send_my_addrs(self: Arc<Self>) -> Result<()> {
+    //    debug!(
+    //        target: "net::protocol_address::send_my_addrs()",
+    //        "[START] address={}", self.channel.address(),
+    //    );
 
-        // FIXME: Revisit this. Why do we keep sending it?
-        loop {
-            let ext_addr_msg = AddrsMessage { addrs: self.settings.external_addrs.clone() };
-            self.channel.send(&ext_addr_msg).await?;
-            sleep(900).await;
-        }
-    }
+    //    // FIXME: Revisit this. Why do we keep sending it?
+    //    loop {
+    //        let ext_addr_msg = AddrsMessage { addrs: self.settings.external_addrs.clone() };
+    //        self.channel.send(&ext_addr_msg).await?;
+    //        sleep(900).await;
+    //    }
+    //}
 }
 
 #[async_trait]
@@ -297,10 +299,10 @@ impl ProtocolBase for ProtocolAddress {
 
         self.jobsman.clone().start(ex.clone());
 
-        // If it's an outbound session + has an extern_addr, send our address.
-        if type_id == SESSION_OUTBOUND && !self.settings.external_addrs.is_empty() {
-            self.jobsman.clone().spawn(self.clone().send_my_addrs(), ex.clone()).await;
-        }
+        //// If it's an outbound session + has an extern_addr, send our address.
+        //if type_id == SESSION_OUTBOUND && !self.settings.external_addrs.is_empty() {
+        //    self.jobsman.clone().spawn(self.clone().send_my_addrs(), ex.clone()).await;
+        //}
 
         self.jobsman.clone().spawn(self.clone().handle_receive_addrs(), ex.clone()).await;
         self.jobsman.spawn(self.clone().handle_receive_get_addrs(), ex).await;

+ 4 - 4
src/net/protocol/protocol_seed.rs

@@ -26,7 +26,7 @@ use super::{
     super::{
         channel::ChannelPtr,
         hosts::HostsPtr,
-        message::{AddrsMessage, AddrsMessage2, GetAddrsMessage},
+        message::{AddrsMessage, GetAddrsMessage},
         message_subscriber::MessageSubscription,
         p2p::P2pPtr,
         settings::SettingsPtr,
@@ -40,7 +40,7 @@ pub struct ProtocolSeed {
     channel: ChannelPtr,
     hosts: HostsPtr,
     settings: SettingsPtr,
-    addr_sub: MessageSubscription<AddrsMessage2>,
+    addr_sub: MessageSubscription<AddrsMessage>,
 }
 
 const PROTO_NAME: &str = "ProtocolSeed";
@@ -53,7 +53,7 @@ impl ProtocolSeed {
 
         // Create a subscription to address message
         let addr_sub =
-            channel.subscribe_msg::<AddrsMessage2>().await.expect("Missing addr dispatcher!");
+            channel.subscribe_msg::<AddrsMessage>().await.expect("Missing addr dispatcher!");
 
         Arc::new(Self { channel, hosts, settings, addr_sub })
     }
@@ -82,7 +82,7 @@ impl ProtocolSeed {
             "ext_addrs={:?}, dest={}", addrs, self.channel.address(),
         );
 
-        let ext_addr_msg = AddrsMessage2 { addrs };
+        let ext_addr_msg = AddrsMessage { addrs };
         self.channel.send(&ext_addr_msg).await?;
         debug!(target: "net::protocol_seed::send_self_address()", "[END]");
         Ok(())