datum parsing
This commit is contained in:
@@ -16,7 +16,8 @@ use crate::{
|
||||
message_handling::EventType,
|
||||
messages_channels::{MultipleSenders, start_receving_thread, start_retry_thread},
|
||||
messages_structure::{
|
||||
NATTRAVERSALREQUEST, NATTRAVERSALREQUEST2, PING, ROOTREQUEST, construct_message,
|
||||
DATUMREQUEST, NATTRAVERSALREQUEST, NATTRAVERSALREQUEST2, PING, ROOTREQUEST,
|
||||
construct_message,
|
||||
},
|
||||
peers_refresh::HandshakeHistory,
|
||||
registration::{parse_addresses, perform_handshake, register_with_the_server},
|
||||
@@ -147,7 +148,7 @@ pub enum NetworkCommand {
|
||||
Disconnect(),
|
||||
ResetServerPeer(),
|
||||
Discover(String, String, String),
|
||||
GetChildren(String, String),
|
||||
GetChildren([u8; 32], String),
|
||||
// ...
|
||||
}
|
||||
|
||||
@@ -159,7 +160,7 @@ pub enum NetworkEvent {
|
||||
Error(String),
|
||||
PeerConnected(String),
|
||||
PeerListUpdated(Vec<(String, bool)>),
|
||||
FileTreeReceived([u8; 32], MerkleNode), // peer_id, content
|
||||
FileTreeReceived([u8; 32], MerkleNode, String), // peer_id, content
|
||||
DataReceived(String, MerkleNode),
|
||||
FileTreeRootReceived(String, NodeHash),
|
||||
HandshakeFailed(),
|
||||
@@ -289,8 +290,37 @@ pub fn start_p2p_executor(
|
||||
println!("no shared data");
|
||||
}
|
||||
}
|
||||
NetworkCommand::GetChildren(username, hash) => {
|
||||
// envoie un datum request au peer
|
||||
NetworkCommand::GetChildren(hash, ip) => {
|
||||
if let Some(sd) = shared_data.as_ref() {
|
||||
let mut payload = Vec::new();
|
||||
payload.extend_from_slice(&hash);
|
||||
let new_id = generate_id();
|
||||
let datumreqest = construct_message(
|
||||
DATUMREQUEST,
|
||||
payload,
|
||||
new_id,
|
||||
sd.cryptopair_ref(),
|
||||
);
|
||||
match datumreqest {
|
||||
None => {}
|
||||
Some(resp_msg) => {
|
||||
sd.add_message(new_id, EventType::DatumRequest);
|
||||
println!("msg_sent:{:?}", resp_msg);
|
||||
sd.senders_ref().add_message_to_retry_queue(
|
||||
resp_msg.clone(),
|
||||
ip.clone(),
|
||||
false,
|
||||
);
|
||||
|
||||
sd.senders_ref().send_dispatch(
|
||||
resp_msg,
|
||||
ip.clone(),
|
||||
false,
|
||||
sd.messages_list(),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
NetworkCommand::RequestDirectoryContent(_, _) => {
|
||||
println!("[Network] RequestDirectoryContent() called");
|
||||
|
||||
Reference in New Issue
Block a user