bigfix #5
@@ -473,8 +473,15 @@ pub fn big_or_chunk_to_file(tree: &MerkleTree, node: &MerkleNode, file: &mut Fil
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
MerkleNode::Chunk(chunk) => {
|
MerkleNode::Chunk(chunk) => {
|
||||||
println!("wrote data");
|
if !chunk.data.is_empty() {
|
||||||
let _ = file.write_all(&chunk.data);
|
// Enlève le premier élément
|
||||||
|
let mut data = chunk.data.clone(); // Clone pour éviter de modifier l'original
|
||||||
|
data.remove(0); // Enlève le premier élément
|
||||||
|
println!("wrote data {:?}", data);
|
||||||
|
let _ = file.write(&data);
|
||||||
|
} else {
|
||||||
|
println!("chunk.data is empty, nothing to write");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
_ => {
|
_ => {
|
||||||
println!("invalid type of file");
|
println!("invalid type of file");
|
||||||
|
|||||||
@@ -11,15 +11,19 @@ pub fn parse_received_datum(
|
|||||||
datum_length: usize,
|
datum_length: usize,
|
||||||
) -> Option<([u8; 32], MerkleNode)> {
|
) -> Option<([u8; 32], MerkleNode)> {
|
||||||
let hash_name: [u8; 32] = recevied_datum[..32].try_into().expect("error");
|
let hash_name: [u8; 32] = recevied_datum[..32].try_into().expect("error");
|
||||||
let value = &recevied_datum[32..recevied_datum.len()];
|
let value = &recevied_datum[32..datum_length];
|
||||||
let value_slice = value.to_vec();
|
let value_slice = value.to_vec();
|
||||||
//println!("valueslice: {:?}, {}", value_slice, value_slice.len());
|
println!("valueslice: {:?}, {}", value_slice, value_slice.len());
|
||||||
|
|
||||||
|
println!(
|
||||||
|
"((value_slice.len() - 1) / 32) {} ",
|
||||||
|
((value_slice.len() - 1) / 32)
|
||||||
|
);
|
||||||
// Créer une instance de Sha256
|
// Créer une instance de Sha256
|
||||||
let mut hasher = Sha256::new();
|
let mut hasher = Sha256::new();
|
||||||
|
|
||||||
// Alimenter le hasher avec les données
|
// Alimenter le hasher avec les données
|
||||||
hasher.update(value);
|
hasher.update(value_slice.clone());
|
||||||
|
|
||||||
// Obtention du résultat
|
// Obtention du résultat
|
||||||
let result = hasher.finalize();
|
let result = hasher.finalize();
|
||||||
@@ -27,6 +31,7 @@ pub fn parse_received_datum(
|
|||||||
println!("{:?},{:?}", result.to_vec(), hash_name.to_vec());
|
println!("{:?},{:?}", result.to_vec(), hash_name.to_vec());
|
||||||
None
|
None
|
||||||
} else {
|
} else {
|
||||||
|
println!("hashes equals!");
|
||||||
let datum_type = value_slice[0];
|
let datum_type = value_slice[0];
|
||||||
match datum_type {
|
match datum_type {
|
||||||
CHUNK => Some((
|
CHUNK => Some((
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ impl P2PSharedData {
|
|||||||
|
|
||||||
let mut threads = Vec::new();
|
let mut threads = Vec::new();
|
||||||
|
|
||||||
let senders = MultipleSenders::new(1, &shared_socket, cmd_tx, &mut threads);
|
let senders = MultipleSenders::new(5, &shared_socket, cmd_tx, &mut threads);
|
||||||
let shared_senders = Arc::new(senders);
|
let shared_senders = Arc::new(senders);
|
||||||
let server_name = Arc::new(Mutex::new("".to_string()));
|
let server_name = Arc::new(Mutex::new("".to_string()));
|
||||||
let server_address = Arc::new(Mutex::new("".to_string()));
|
let server_address = Arc::new(Mutex::new("".to_string()));
|
||||||
|
|||||||
@@ -370,14 +370,11 @@ pub fn parse_message(
|
|||||||
// envoyer la root request
|
// envoyer la root request
|
||||||
let _ = &guard.remove_entry(&id);
|
let _ = &guard.remove_entry(&id);
|
||||||
println!("message {} retiré de la liste", id);
|
println!("message {} retiré de la liste", id);
|
||||||
|
let new_id = generate_id();
|
||||||
let rootrequest = construct_message(
|
let rootrequest =
|
||||||
ROOTREQUEST,
|
construct_message(ROOTREQUEST, Vec::new(), new_id, crypto_pair);
|
||||||
Vec::new(),
|
let _ = &guard.insert(new_id, EventType::RootRequest);
|
||||||
generate_id(),
|
println!("root requesst sent");
|
||||||
crypto_pair,
|
|
||||||
);
|
|
||||||
//&guard.insert(, v)
|
|
||||||
return rootrequest;
|
return rootrequest;
|
||||||
}
|
}
|
||||||
EventType::Hello => {
|
EventType::Hello => {
|
||||||
@@ -392,6 +389,7 @@ pub fn parse_message(
|
|||||||
}
|
}
|
||||||
ROOTREPLY => {
|
ROOTREPLY => {
|
||||||
// recuperer le pseudo du peers ayant repondu
|
// recuperer le pseudo du peers ayant repondu
|
||||||
|
println!("root reply received");
|
||||||
let peers_exist = handhsake_history.get_peer_info_ip(ip.to_string());
|
let peers_exist = handhsake_history.get_peer_info_ip(ip.to_string());
|
||||||
match peers_exist {
|
match peers_exist {
|
||||||
Some(peerinfo) => {
|
Some(peerinfo) => {
|
||||||
@@ -429,7 +427,9 @@ pub fn parse_message(
|
|||||||
constructed_message = datumreqest;
|
constructed_message = datumreqest;
|
||||||
guard.insert(new_id, EventType::DatumRequest);
|
guard.insert(new_id, EventType::DatumRequest);
|
||||||
}
|
}
|
||||||
_ => {}
|
_ => {
|
||||||
|
println!("event not prensent");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
None => {}
|
None => {}
|
||||||
|
|||||||
@@ -273,13 +273,13 @@ pub fn start_receving_thread(
|
|||||||
let messages_received_clone = shared_data.messages_received();
|
let messages_received_clone = shared_data.messages_received();
|
||||||
let servername_clone = shared_data.servername();
|
let servername_clone = shared_data.servername();
|
||||||
let thread = thread::spawn(move || {
|
let thread = thread::spawn(move || {
|
||||||
let mut buf = [0u8; 1024];
|
let mut buf = [0u8; 1500];
|
||||||
loop {
|
loop {
|
||||||
match sock_clone.recv_from(&mut buf) {
|
match sock_clone.recv_from(&mut buf) {
|
||||||
Ok((amt, src)) => {
|
Ok((amt, src)) => {
|
||||||
let received_data = buf[..amt].to_vec();
|
let received_data = buf[..amt].to_vec();
|
||||||
|
|
||||||
println!("Reçu {} octets de {}", amt, src);
|
println!("Reçu {} octets de {}: {:?}", amt, src, received_data);
|
||||||
handle_recevied_message(
|
handle_recevied_message(
|
||||||
&messages_clone,
|
&messages_clone,
|
||||||
&messages_received_clone,
|
&messages_received_clone,
|
||||||
|
|||||||
@@ -75,6 +75,7 @@ pub async fn perform_handshake(
|
|||||||
sd.add_message(id, EventType::Hello);
|
sd.add_message(id, EventType::Hello);
|
||||||
sd.set_serveraddress(sockaddr_bytes.to_string());
|
sd.set_serveraddress(sockaddr_bytes.to_string());
|
||||||
} else {
|
} else {
|
||||||
|
println!("hello the nroot");
|
||||||
sd.add_message(id, EventType::HelloThenRootRequest);
|
sd.add_message(id, EventType::HelloThenRootRequest);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user