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

darkfid: Create sync_p2p before consensus_p2p to be able to reference.

parazyd 4 лет назад
Родитель
Сommit
8c98f8eb0d
1 измененных файлов с 42 добавлено и 36 удалено
  1. 42 36
      bin/darkfid2/src/main.rs

+ 42 - 36
bin/darkfid2/src/main.rs

@@ -453,6 +453,41 @@ async fn realmain(args: Args, ex: Arc<Executor<'_>>) -> Result<()> {
     // Initialize validator state
     // Initialize validator state
     let state = ValidatorState::new(&sled_db, id, genesis_ts, genesis_data)?;
     let state = ValidatorState::new(&sled_db, id, genesis_ts, genesis_data)?;
 
 
+    let sync_p2p = {
+        info!("Registering sync P2P protocols...");
+        let sync_network_settings = net::Settings {
+            inbound: args.sync_p2p_accept,
+            outbound_connections: args.sync_slots,
+            external_addr: args.sync_p2p_external,
+            peers: args.sync_peer.clone(),
+            seeds: args.sync_seed.clone(),
+            ..Default::default()
+        };
+
+        let p2p = net::P2p::new(sync_network_settings).await;
+        let registry = p2p.protocol_registry();
+
+        let _state = state.clone();
+        registry
+            //.register(net::SESSION_ALL, move |channel, p2p| {
+            .register(!net::SESSION_SEED, move |channel, p2p| {
+                let state = _state.clone();
+                async move { ProtocolSync::init(channel, state, p2p).await.unwrap() }
+            })
+            .await;
+
+        let _state = state.clone();
+        registry
+            //.register(net::SESSION_ALL, move |channel, p2p| {
+            .register(!net::SESSION_SEED, move |channel, p2p| {
+                let state = _state.clone();
+                async move { ProtocolTx::init(channel, state, p2p).await.unwrap() }
+            })
+            .await;
+
+        Some(p2p)
+    };
+
     // P2P network settings for the consensus protocol
     // P2P network settings for the consensus protocol
     let consensus_p2p = {
     let consensus_p2p = {
         if !args.consensus {
         if !args.consensus {
@@ -489,11 +524,17 @@ async fn realmain(args: Args, ex: Arc<Executor<'_>>) -> Result<()> {
                 .await;
                 .await;
 
 
             let _state = state.clone();
             let _state = state.clone();
+            let _sync_p2p = sync_p2p.clone().unwrap();
             registry
             registry
                 //.register(net::SESSION_ALL, move |channel, p2p| {
                 //.register(net::SESSION_ALL, move |channel, p2p| {
                 .register(!net::SESSION_SEED, move |channel, p2p| {
                 .register(!net::SESSION_SEED, move |channel, p2p| {
                     let state = _state.clone();
                     let state = _state.clone();
-                    async move { ProtocolVote::init(channel, state, p2p).await.unwrap() }
+                    let __sync_p2p = _sync_p2p.clone();
+                    async move {
+                        ProtocolVote::init(channel, state, __sync_p2p, p2p)
+                            .await
+                            .unwrap()
+                    }
                 })
                 })
                 .await;
                 .await;
 
 
@@ -510,41 +551,6 @@ async fn realmain(args: Args, ex: Arc<Executor<'_>>) -> Result<()> {
         }
         }
     };
     };
 
 
-    let sync_p2p = {
-        info!("Registering sync P2P protocols...");
-        let sync_network_settings = net::Settings {
-            inbound: args.sync_p2p_accept,
-            outbound_connections: args.sync_slots,
-            external_addr: args.sync_p2p_external,
-            peers: args.sync_peer.clone(),
-            seeds: args.sync_seed.clone(),
-            ..Default::default()
-        };
-
-        let p2p = net::P2p::new(sync_network_settings).await;
-        let registry = p2p.protocol_registry();
-
-        let _state = state.clone();
-        registry
-            //.register(net::SESSION_ALL, move |channel, p2p| {
-            .register(!net::SESSION_SEED, move |channel, p2p| {
-                let state = _state.clone();
-                async move { ProtocolSync::init(channel, state, p2p).await.unwrap() }
-            })
-            .await;
-
-        let _state = state.clone();
-        registry
-            //.register(net::SESSION_ALL, move |channel, p2p| {
-            .register(!net::SESSION_SEED, move |channel, p2p| {
-                let state = _state.clone();
-                async move { ProtocolTx::init(channel, state, p2p).await.unwrap() }
-            })
-            .await;
-
-        Some(p2p)
-    };
-
     // Initialize program state
     // Initialize program state
     let darkfid =
     let darkfid =
         Darkfid::new(&sled_db, wallet, state.clone(), consensus_p2p.clone(), sync_p2p.clone())
         Darkfid::new(&sled_db, wallet, state.clone(), consensus_p2p.clone(), sync_p2p.clone())