datum parsing
This commit is contained in:
@@ -6,6 +6,7 @@ use crossbeam_channel::{Receiver, Sender};
|
||||
use egui::{
|
||||
Align, Align2, Button, CentralPanel, CollapsingHeader, Context, Id, LayerId, Layout, Order,
|
||||
Popup, ScrollArea, SidePanel, TextStyle, TopBottomPanel, Ui, ViewportCommand,
|
||||
debug_text::print,
|
||||
};
|
||||
use std::{collections::HashMap, fmt::format};
|
||||
|
||||
@@ -120,8 +121,36 @@ impl eframe::App for P2PClientApp {
|
||||
|
||||
self.known_peers = peers;
|
||||
}
|
||||
NetworkEvent::FileTreeReceived(node_hash, merklenode) => {
|
||||
//self.status_message = "🔄 File tree updated successfully.".to_string();
|
||||
|
||||
NetworkEvent::FileTreeReceived(node_hash, merklenode, ip) => {
|
||||
match &self.active_peer {
|
||||
Some(active_peer) => {
|
||||
if let Some(maptree) = self.loaded_fs.get_mut(active_peer) {
|
||||
maptree.data.insert(node_hash, merklenode.clone());
|
||||
match merklenode {
|
||||
MerkleNode::Directory(d) => {
|
||||
for entry in d.entries {
|
||||
let _ = self.network_cmd_tx.send(
|
||||
NetworkCommand::GetChildren(
|
||||
entry.content_hash,
|
||||
ip.clone(),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
MerkleNode::BigDirectory(bigd) => {
|
||||
for entry in bigd.children_hashes {
|
||||
let _ = self.network_cmd_tx.send(
|
||||
NetworkCommand::GetChildren(entry, ip.clone()),
|
||||
);
|
||||
}
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
}
|
||||
None => {}
|
||||
}
|
||||
}
|
||||
NetworkEvent::FileTreeRootReceived(peer_id, root_hash) => {
|
||||
// todo!();
|
||||
@@ -133,8 +162,10 @@ impl eframe::App for P2PClientApp {
|
||||
);*/
|
||||
|
||||
if let Ok(chunknode) = ChunkNode::new(Vec::new()) {
|
||||
let mut data_map: HashMap<NodeHash, MerkleNode> = HashMap::new();
|
||||
data_map.insert(root_hash, MerkleNode::Chunk(chunknode));
|
||||
let data_map: HashMap<NodeHash, MerkleNode> = HashMap::new();
|
||||
//data_map.insert(root_hash, MerkleNode::Chunk(chunknode));
|
||||
println!("len root: {}", data_map.len());
|
||||
println!("node hash: {:?}", root_hash.to_vec());
|
||||
let tree = MerkleTree {
|
||||
data: data_map,
|
||||
root: root_hash,
|
||||
@@ -242,64 +273,7 @@ impl eframe::App for P2PClientApp {
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
|
||||
/* ui.horizontal(|ui| {
|
||||
ui.label("Server peer name:");
|
||||
ui.text_edit_singleline(&mut self.connect_server_name_input);
|
||||
if ui.button("Connect").clicked() {
|
||||
let addr = self.connect_address_input.clone();
|
||||
let serv_name = self.connect_server_name_input.clone();
|
||||
let _ = self
|
||||
.network_cmd_tx
|
||||
.send(NetworkCommand::ConnectToServer(addr, serv_name));
|
||||
self.server_status = ServerStatus::Loading;
|
||||
ui.close();
|
||||
}
|
||||
});*/
|
||||
});
|
||||
|
||||
// état
|
||||
|
||||
/*if ui.button("Network").clicked() {
|
||||
self.show_network_popup = true;
|
||||
}*/
|
||||
|
||||
/*if self.show_network_popup {
|
||||
egui::Window::new("Network")
|
||||
.collapsible(false)
|
||||
.resizable(false)
|
||||
.show(ctx, |ui| {
|
||||
ui.horizontal_wrapped(|ui| {
|
||||
ui.with_layout(
|
||||
egui::Layout::right_to_left(egui::Align::TOP),
|
||||
|ui| {
|
||||
if ui.button("✕").clicked() {
|
||||
self.show_network_popup = false;
|
||||
}
|
||||
},
|
||||
);
|
||||
});
|
||||
ui.horizontal(|ui| {
|
||||
ui.label("Server IP:");
|
||||
ui.text_edit_singleline(&mut self.connect_address_input);
|
||||
});
|
||||
ui.horizontal(|ui| {
|
||||
ui.label("Server peer name:");
|
||||
ui.text_edit_singleline(&mut self.connect_server_name_input);
|
||||
if ui.button("Connect").clicked() {
|
||||
// envoyer commande...
|
||||
let addr = self.connect_address_input.clone();
|
||||
let serv_name = self.connect_server_name_input.clone();
|
||||
let _ = self
|
||||
.network_cmd_tx
|
||||
.send(NetworkCommand::ConnectToServer(addr, serv_name));
|
||||
self.server_status = ServerStatus::Loading;
|
||||
|
||||
self.show_network_popup = false;
|
||||
}
|
||||
});
|
||||
});
|
||||
}*/
|
||||
});
|
||||
});
|
||||
|
||||
@@ -514,11 +488,12 @@ impl P2PClientApp {
|
||||
if let Some(current) = tree.data.get(&to_draw) {
|
||||
let name = {
|
||||
if filename.is_some() {
|
||||
filename_to_string(filename.unwrap())
|
||||
String::from_utf8(filename.unwrap().to_vec()).expect("err")
|
||||
} else {
|
||||
node_hash_to_hex_string(&to_draw)
|
||||
}
|
||||
};
|
||||
|
||||
match current {
|
||||
MerkleNode::Chunk(node) => {
|
||||
if ui
|
||||
@@ -544,13 +519,7 @@ impl P2PClientApp {
|
||||
entry.content_hash,
|
||||
tree,
|
||||
depth + 1,
|
||||
Some(
|
||||
entry
|
||||
.filename
|
||||
.as_slice()
|
||||
.try_into()
|
||||
.expect("incorrect size"),
|
||||
),
|
||||
Some(entry.filename.try_into().expect("incorrect size")),
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user