Przeglądaj źródła

net: Use AtomicBool for dnet_enabled mark

parazyd 2 lat temu
rodzic
commit
46a74e6b60

+ 2 - 2
bin/darkfid/src/rpc.rs

@@ -121,9 +121,9 @@ impl Darkfid {
         let switch = params[0].get::<bool>().unwrap();
 
         if *switch {
-            self.p2p.dnet_enable().await;
+            self.p2p.dnet_enable();
         } else {
-            self.p2p.dnet_disable().await;
+            self.p2p.dnet_disable();
         }
 
         JsonResponse::new(JsonValue::Boolean(true), id).into()

+ 2 - 2
bin/darkirc/src/rpc.rs

@@ -77,9 +77,9 @@ impl DarkIrc {
         let switch = params[0].get::<bool>().unwrap();
 
         if *switch {
-            self.p2p.dnet_enable().await;
+            self.p2p.dnet_enable();
         } else {
-            self.p2p.dnet_disable().await;
+            self.p2p.dnet_disable();
         }
 
         JsonResponse::new(JsonValue::Boolean(true), id).into()

+ 2 - 2
bin/genev/genevd/src/rpc.rs

@@ -129,9 +129,9 @@ impl JsonRpcInterface {
         let switch = params[0].get::<bool>().unwrap();
 
         if *switch {
-            self.p2p.dnet_enable().await;
+            self.p2p.dnet_enable();
         } else {
-            self.p2p.dnet_disable().await;
+            self.p2p.dnet_disable();
         }
 
         JsonResponse::new(JsonValue::Boolean(true), id).into()

+ 2 - 2
bin/tau/taud/src/jsonrpc.rs

@@ -156,9 +156,9 @@ impl JsonRpcInterface {
         let switch = params[0].get::<bool>().unwrap();
 
         if *switch {
-            self.p2p.dnet_enable().await;
+            self.p2p.dnet_enable();
         } else {
-            self.p2p.dnet_disable().await;
+            self.p2p.dnet_disable();
         }
 
         Ok(JsonValue::Boolean(true))

+ 2 - 2
example/dchat/dchatd/src/rpc.rs

@@ -93,9 +93,9 @@ impl Dchat {
         let switch = params[0].get::<bool>().unwrap();
 
         if *switch {
-            self.p2p.dnet_enable().await;
+            self.p2p.dnet_enable();
         } else {
-            self.p2p.dnet_disable().await;
+            self.p2p.dnet_disable();
         }
 
         JsonResponse::new(JsonValue::Boolean(true), id).into()

+ 1 - 1
src/net/dnet.rs

@@ -24,7 +24,7 @@ use crate::util::time::NanoTimestamp;
 macro_rules! dnetev {
     ($self:expr, $event_name:ident, $($code:tt)*) => {
         {
-            if *$self.p2p().dnet_enabled.lock().await {
+            if $self.p2p().dnet_enabled.load(std::sync::atomic::Ordering::SeqCst) {
                 let event = DnetEvent::$event_name(dnet::$event_name $($code)*);
                 $self.p2p().dnet_notify(event).await;
             }

+ 10 - 8
src/net/p2p.rs

@@ -16,14 +16,16 @@
  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
  */
 
-use std::sync::Arc;
+use std::sync::{
+    atomic::{AtomicBool, Ordering},
+    Arc,
+};
 
 use futures::{stream::FuturesUnordered, TryFutureExt};
 use futures_rustls::rustls::crypto::{ring, CryptoProvider};
 use log::{debug, error, info, warn};
 use smol::{
     fs::{self, unix::PermissionsExt},
-    lock::Mutex,
     stream::StreamExt,
 };
 use url::Url;
@@ -70,7 +72,7 @@ pub struct P2p {
     /// Reference to configured [`SeedSyncSession`]
     session_seedsync: SeedSyncSessionPtr,
     /// Enable network debugging
-    pub dnet_enabled: Mutex<bool>,
+    pub dnet_enabled: AtomicBool,
     /// The publisher for which we can give dnet info over
     dnet_publisher: PublisherPtr<DnetEvent>,
 }
@@ -108,7 +110,7 @@ impl P2p {
             session_refine: RefineSession::new(),
             session_seedsync: SeedSyncSession::new(),
 
-            dnet_enabled: Mutex::new(false),
+            dnet_enabled: AtomicBool::new(false),
             dnet_publisher: Publisher::new(),
         });
 
@@ -266,14 +268,14 @@ impl P2p {
     }
 
     /// Enable network debugging
-    pub async fn dnet_enable(&self) {
-        *self.dnet_enabled.lock().await = true;
+    pub fn dnet_enable(&self) {
+        self.dnet_enabled.store(true, Ordering::SeqCst);
         warn!("[P2P] Network debugging enabled!");
     }
 
     /// Disable network debugging
-    pub async fn dnet_disable(&self) {
-        *self.dnet_enabled.lock().await = false;
+    pub fn dnet_disable(&self) {
+        self.dnet_enabled.store(false, Ordering::SeqCst);
         warn!("[P2P] Network debugging disabled!");
     }