Преглед изворни кода

net: provide exclude list during broadcast

ghassmo пре 4 година
родитељ
комит
f6a85f0360
1 измењених фајлова са 16 додато и 0 уклоњено
  1. 16 0
      src/net/p2p.rs

+ 16 - 0
src/net/p2p.rs

@@ -185,6 +185,22 @@ impl P2p {
         Ok(())
     }
 
+    /// Broadcasts a message across all channels.
+    /// exclude channels provided in exclude_list
+    pub async fn broadcast_with_exclude<M: Message + Clone>(
+        &self,
+        message: M,
+        exclude_list: &[Url],
+    ) -> Result<()> {
+        for channel in self.channels.lock().await.values() {
+            if exclude_list.contains(&channel.address()) {
+                continue
+            }
+            channel.send(message.clone()).await?;
+        }
+        Ok(())
+    }
+
     /// Add channel address to the list of connected channels.
     pub async fn store(&self, channel: ChannelPtr) {
         self.channels.lock().await.insert(channel.address(), channel.clone());