From 3b8a685d9c87f4bc227957f85ac204d0b04d9208 Mon Sep 17 00:00:00 2001 From: draoi Date: Mon, 22 Jul 2024 12:04:39 +0200 Subject: [PATCH] hosts: add peers() method to return channels minus seed connections --- src/net/hosts.rs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/net/hosts.rs b/src/net/hosts.rs index 78ea29098..3ac756bf1 100644 --- a/src/net/hosts.rs +++ b/src/net/hosts.rs @@ -32,7 +32,7 @@ use rand::{prelude::IteratorRandom, rngs::OsRng, Rng}; use smol::lock::RwLock as AsyncRwLock; use url::Url; -use super::{settings::Settings, ChannelPtr}; +use super::{session::SESSION_SEED, settings::Settings, ChannelPtr}; use crate::{ system::{Publisher, PublisherPtr, Subscription}, util::{ @@ -979,6 +979,21 @@ impl Hosts { channels } + /// Returns the list of connected channels, excluding seed connections. + pub fn peers(&self) -> Vec { + let registry = self.registry.lock().unwrap(); + let mut channels = Vec::new(); + + for (_, state) in registry.iter() { + if let HostState::Connected(c) = state { + if c.session_type_id() & SESSION_SEED == 0 { + channels.push(c.clone()); + } + } + } + channels + } + /// Returns the list of suspended channels. pub(in crate::net) fn suspended(&self) -> Vec { let registry = self.registry.lock().unwrap();