feat: remove peers

This commit is contained in:
Michel de Graaf
2025-07-05 22:54:28 +02:00
parent d07e9ec113
commit 57dafaf8ab
2 changed files with 20 additions and 1 deletions
+15
View File
@@ -21,6 +21,7 @@ const MAX_THREADS: usize = 100;
pub enum ClientOperation {
ConnectToPeer(Peer),
SearchResult(FileSearchResult),
PeerDisconnected(String),
}
struct ClientContext {
peers: HashMap<String, DefaultPeer>,
@@ -103,6 +104,14 @@ impl Client {
}
}
#[allow(dead_code)]
pub fn remove_peer(&self, username: &str) {
let mut context = self.context.lock().unwrap();
if let Some(peer) = context.peers.remove(username) {
drop(peer); // Explicitly drop to trigger cleanup
}
}
pub fn search(&self, query: &str, timeout: Duration) -> Vec<FileSearchResult> {
println!("Searching for {}", query);
if let Some(server) = &self.server {
@@ -139,6 +148,12 @@ impl Client {
.search_results
.push(file_search);
}
ClientOperation::PeerDisconnected(username) => {
let mut context = client_context.lock().unwrap();
if let Some(peer) = context.peers.remove(&username) {
drop(peer); // Explicitly drop to trigger cleanup
}
}
}
}
});