aggstam 3 gadi atpakaļ
vecāks
revīzija
5d63d86083

+ 1 - 1
Makefile

@@ -12,7 +12,7 @@ CARGO = cargo +nightly
 #TARGET_PRFX = --target=
 
 # Binaries to be built
-BINS = darkfid faucetd drk darkirc dnetview vanityaddr tau taud
+BINS = darkfid faucetd drk darkirc vanityaddr tau taud
 
 # zkas dependencies
 ZKASDEPS = \

+ 3 - 1
bin/genev/genevd/src/rpc.rs

@@ -88,7 +88,9 @@ impl JsonRpcInterface {
     //
     // --> {"jsonrpc": "2.0", "method": "dnet_switch", "params": [true], "id": 42}
     // <-- {"jsonrpc": "2.0", "result": true, "id": 42}
-    async fn dnet_switch(&self, id: Value, params: &[Value]) -> JsonResult {
+    async fn dnet_switch(&self, id: Value, params: Value) -> JsonResult {
+        let params = params.as_array().unwrap();
+
         if params.len() != 1 && params[0].as_bool().is_none() {
             return JsonError::new(ErrorCode::InvalidParams, None, id).into()
         }

+ 32 - 7
example/dchat/src/rpc.rs

@@ -48,7 +48,8 @@ impl RequestHandler for JsonRpcInterface {
         // ANCHOR: req_match
         match req.method.as_str() {
             Some("ping") => self.pong(req.id, req.params).await,
-            Some("get_info") => self.get_info(req.id, req.params).await,
+            Some("dnet_switch") => self.dnet_switch(req.id, req.params).await,
+            Some("dnet_info") => self.dnet_info(req.id, req.params).await,
             Some(_) | None => JsonError::new(ErrorCode::MethodNotFound, None, req.id).into(),
         }
         // ANCHOR_END: req_match
@@ -66,14 +67,38 @@ impl JsonRpcInterface {
     }
     // ANCHOR_END: pong
 
+    // RPCAPI:
+    // Activate or deactivate dnet in the P2P stack.
+    // By sending `true`, dnet will be activated, and by sending `false` dnet will
+    // be deactivated. Returns `true` on success.
+    //
+    // --> {"jsonrpc": "2.0", "method": "dnet_switch", "params": [true], "id": 42}
+    // <-- {"jsonrpc": "2.0", "result": true, "id": 42}
+    async fn dnet_switch(&self, id: Value, params: Value) -> JsonResult {
+        let params = params.as_array().unwrap();
+
+        if params.len() != 1 && params[0].as_bool().is_none() {
+            return JsonError::new(ErrorCode::InvalidParams, None, id).into()
+        }
+
+        if params[0].as_bool().unwrap() {
+            self.p2p.dnet_enable().await;
+        } else {
+            self.p2p.dnet_disable().await;
+        }
+
+        JsonResponse::new(json!(true), id).into()
+    }
+
     // RPCAPI:
     // Retrieves P2P network information.
-    // --> {"jsonrpc": "2.0", "method": "get_info", "params": [], "id": 42}
+    //
+    // --> {"jsonrpc": "2.0", "method": "dnet_info", "params": [], "id": 42}
     // <-- {"jsonrpc": "2.0", result": {"nodeID": [], "nodeinfo": [], "id": 42}
-    // ANCHOR: get_info
-    async fn get_info(&self, id: Value, _params: Value) -> JsonResult {
-        let resp = self.p2p.get_info().await;
-        JsonResponse::new(resp, id).into()
+    // ANCHOR: dnet_info
+    async fn dnet_info(&self, id: Value, _params: Value) -> JsonResult {
+        let dnet_info = self.p2p.dnet_info().await;
+        JsonResponse::new(net::P2p::map_dnet_info(dnet_info), id).into()
     }
-    // ANCHOR_END: get_info
+    // ANCHOR_END: dnet_info
 }

+ 2 - 6
src/net/session/inbound_session.rs

@@ -57,13 +57,9 @@ pub struct InboundInfo {
 
 impl InboundInfo {
     async fn dnet_info(&self, p2p: P2pPtr) -> Option<Self> {
-        let Some(ref addr) = self.addr else {
-            return None
-        };
+        let Some(ref addr) = self.addr else { return None };
 
-        let Some(chan) = p2p.channels().lock().await.get(&addr).cloned() else {
-            return None
-        };
+        let Some(chan) = p2p.channels().lock().await.get(&addr).cloned() else { return None };
 
         Some(Self { addr: self.addr.clone(), channel: Some(chan.dnet_info().await) })
     }

+ 2 - 6
src/net/session/outbound_session.rs

@@ -86,13 +86,9 @@ pub struct OutboundInfo {
 
 impl OutboundInfo {
     async fn dnet_info(&self, p2p: P2pPtr) -> Option<Self> {
-        let Some(ref addr) = self.addr else {
-            return None
-        };
+        let Some(ref addr) = self.addr else { return None };
 
-        let Some(chan) = p2p.channels().lock().await.get(&addr).cloned() else {
-            return None
-        };
+        let Some(chan) = p2p.channels().lock().await.get(&addr).cloned() else { return None };
 
         Some(Self {
             addr: self.addr.clone(),

+ 1 - 1
src/util/ringbuffer.rs

@@ -80,7 +80,7 @@ mod tests {
     #[test]
     fn behaviour() {
         const BUF_SIZE: usize = 10;
-        let mut buf = RingBuffer::<BUF_SIZE>::new();
+        let mut buf = RingBuffer::<usize, BUF_SIZE>::new();
 
         for i in 0..BUF_SIZE {
             buf.push(i);