wip handling root request

This commit is contained in:
2026-01-13 02:32:48 +01:00
parent 8e279d9e24
commit 98fcc1a0b2
8 changed files with 356 additions and 219 deletions

View File

@@ -49,11 +49,11 @@ pub struct P2PClientApp {
impl P2PClientApp {
pub fn new(cmd_tx: Sender<NetworkCommand>, event_rx: Receiver<NetworkEvent>) -> Self {
let (root_hash, tree_content) = MerkleNode::generate_base_tree();
//let (root_hash, tree_content) = MerkleNode::generate_base_tree();
let mut loaded_fs = HashMap::new();
let tree = MerkleTree::new(tree_content, root_hash);
loaded_fs.insert("bob".to_string(), tree);
//let tree = MerkleTree::new(tree_content, root_hash);
//loaded_fs.insert("bob".to_string(), tree);
Self {
remaining: std::time::Duration::from_secs(0),
@@ -123,23 +123,24 @@ impl eframe::App for P2PClientApp {
NetworkEvent::FileTreeReceived(_peer_id, _) => {
todo!();
// self.loaded_tree_nodes.insert(_peer_id, tree);
self.status_message = "🔄 File tree updated successfully.".to_string();
//self.loaded_tree_nodes.insert(_peer_id, tree);
//self.status_message = "🔄 File tree updated successfully.".to_string();
}
NetworkEvent::FileTreeRootReceived(peer_id, root_hash) => {
todo!();
// todo!();
// self.status_message = format!("🔄 Received Merkle Root from {}: {}", peer_id, &root_hash[..8]);
//
//
// self.active_peer_id = Some(peer_id.clone());
//
//
// // Request the content of the root directory immediately
// let _ = self.network_cmd_tx.send(NetworkCommand::RequestDirectoryContent(
// peer_id,
// root_hash,
// ));
self.status_message = format!(
"🔄 Received Merkle Root from {}: {}",
peer_id,
&root_hash[..8]
);
//self.active_peer_id = Some(peer_id.clone());
// Request the content of the root directory immediately
/*let _ = self
.network_cmd_tx
.send(NetworkCommand::RequestDirectoryContent(peer_id, root_hash));*/
}
NetworkEvent::Connected(ip) => {
self.server_status = ServerStatus::Connected;
@@ -360,11 +361,11 @@ impl eframe::App for P2PClientApp {
.loaded_fs
.contains_key(self.active_peer.as_ref().unwrap())
{
todo!();
// let _ = self.network_cmd_tx.send(NetworkCommand::RequestDirectoryContent(
// peer.clone(),
// peer.clone(),
// ));
//todo!();
let _ = self.network_cmd_tx.send(NetworkCommand::Discover(
peer.clone(),
"root".to_string(),
));
}
}
selectable.context_menu(|ui| {
@@ -508,7 +509,13 @@ impl P2PClientApp {
entry.content_hash,
tree,
depth + 1,
Some(entry.filename),
Some(
entry
.filename
.as_slice()
.try_into()
.expect("incorrect size"),
),
);
}
});
@@ -529,7 +536,7 @@ impl P2PClientApp {
.enabled(true)
.show(ui, |ui| {
for child in &node.children_hashes {
self.draw_file_node(ui, child.clone(), tree, depth + 1, None);
self.draw_file_node(ui, child.content_hash, tree, depth + 1, None);
}
});
}