From 97005398333cd1fdc37c5282200cfb49b5c4ac27 Mon Sep 17 00:00:00 2001 From: asxalex Date: Sun, 18 Feb 2024 15:22:13 +0800 Subject: [PATCH] created MyDashMap wrapper --- src/bin/sdlan-sn/utils/sn.rs | 5 +++-- src/utils/helper.rs | 29 +++++++++++++++++++++++++++++ src/utils/mod.rs | 2 ++ 3 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 src/utils/helper.rs diff --git a/src/bin/sdlan-sn/utils/sn.rs b/src/bin/sdlan-sn/utils/sn.rs index bc4c9fb..9c93616 100644 --- a/src/bin/sdlan-sn/utils/sn.rs +++ b/src/bin/sdlan-sn/utils/sn.rs @@ -1,5 +1,6 @@ use dashmap::DashMap; use sdlan_sn_rs::peer::IpSubnet; +use sdlan_sn_rs::utils::MyDashMap; use tokio::net::UdpSocket; use std::{ @@ -35,7 +36,7 @@ pub struct SuperNode { // 该SuperNode包含的所有的网络 // 在云端创建或者删除网络的时候,需要通知sn修改这个网络信息 - pub networks: DashMap, + pub networks: MyDashMap, /// 把所有其他的supernode放在这个fedration里面, /// 在广播或者收到消息发现本地不存在这个目标数据包的时候, @@ -68,7 +69,7 @@ impl SuperNode { start_time, daemon: false, local_port: 7655, - networks: DashMap::new(), + networks: MyDashMap::new(), fedration: Network::new("*fedration"), pending: Network::new("*pending"), ip_range: AutoIpAssign { diff --git a/src/utils/helper.rs b/src/utils/helper.rs new file mode 100644 index 0000000..a1424bb --- /dev/null +++ b/src/utils/helper.rs @@ -0,0 +1,29 @@ +use dashmap::DashMap; +use std::sync::Arc; + +pub struct MyDashMap(DashMap>); + +impl MyDashMap { + pub fn new() -> Self { + MyDashMap(DashMap::new()) + } + + pub fn get(&self, key: &str) -> Option> { + if let Some(t) = self.0.get(key) { + return Some(t.clone()); + } + None + } + + pub fn insert(&self, key: String, value: T) -> Option> { + self.0.insert(key, Arc::new(value)) + } + + pub fn remove(&self, key: &str) -> Option<(String, Arc)> { + self.0.remove(key) + } + + pub fn clear(&self) { + self.0.clear() + } +} diff --git a/src/utils/mod.rs b/src/utils/mod.rs index 3d57720..eaa223e 100644 --- a/src/utils/mod.rs +++ b/src/utils/mod.rs @@ -1,10 +1,12 @@ mod encode_decode; mod error; +mod helper; mod myaes; mod myrsa; pub use encode_decode::*; pub use error::*; +pub use helper::*; pub use myaes::{aes_decrypt, aes_encrypt}; pub use myrsa::{gen_keys, load_private_key_file, load_public_key_file, rsa_decrypt, rsa_encrypt};