message handling and serv registration
This commit is contained in:
@@ -9,7 +9,9 @@ use crate::{
|
||||
cryptographic_signature::CryptographicSignature,
|
||||
message_handling::EventType,
|
||||
messages_channels::{MultipleSenders, start_receving_thread},
|
||||
registration::{register_ip_addresses, register_with_the_server},
|
||||
registration::{
|
||||
get_socket_address, parse_addresses, register_ip_addresses, register_with_the_server,
|
||||
},
|
||||
};
|
||||
use std::sync::{Arc, Mutex};
|
||||
use std::{
|
||||
@@ -19,8 +21,8 @@ use std::{
|
||||
|
||||
/// Messages sent to the Network thread by the GUI.
|
||||
pub enum NetworkCommand {
|
||||
ConnectToServer(String), // ServerIP
|
||||
FetchPeerList(String), // ServerIP
|
||||
ConnectToServer(String, String), // ServerIP
|
||||
FetchPeerList(String), // ServerIP
|
||||
RegisterAsPeer(String),
|
||||
Ping(),
|
||||
ConnectPeer(String), // IP:PORT
|
||||
@@ -95,7 +97,7 @@ pub fn start_p2p_executor(
|
||||
NetworkCommand::RequestChunk(_, _) => {
|
||||
println!("[Network] RequestChunk() called");
|
||||
}
|
||||
NetworkCommand::ConnectToServer(ip) => {
|
||||
NetworkCommand::ConnectToServer(ip, server_name) => {
|
||||
println!("[Network] ConnectToServer() called");
|
||||
|
||||
// Actual server connection
|
||||
@@ -119,25 +121,41 @@ pub fn start_p2p_executor(
|
||||
eprintln!("request failed: {}", e);
|
||||
}
|
||||
|
||||
match SocketAddr::from_str(&ip) {
|
||||
Ok(sockaddr) => {
|
||||
start_receving_thread(
|
||||
&shared_socket,
|
||||
&shared_messageslist,
|
||||
&shared_cryptopair,
|
||||
sockaddr,
|
||||
&shared_senders,
|
||||
);
|
||||
register_ip_addresses(
|
||||
&shared_cryptopair,
|
||||
ip,
|
||||
&shared_senders,
|
||||
&shared_messageslist,
|
||||
);
|
||||
}
|
||||
Err(e) => {
|
||||
eprintln!("failed to parse socket address: {}", e);
|
||||
println!("ip: {}", ip);
|
||||
|
||||
let server_addr_query = get_socket_address(server_name);
|
||||
|
||||
match server_addr_query.await {
|
||||
Ok(sockaddr_bytes) => {
|
||||
match String::from_utf8(sockaddr_bytes.to_vec()) {
|
||||
Ok(s) => {
|
||||
let addresses = parse_addresses(&s);
|
||||
if let Some(first) = addresses.first() {
|
||||
// first: &SocketAddr
|
||||
start_receving_thread(
|
||||
&shared_socket,
|
||||
&shared_messageslist,
|
||||
&shared_cryptopair,
|
||||
*first, // copie le SocketAddr (implémente Copy pour SocketAddr)
|
||||
&shared_senders,
|
||||
);
|
||||
register_ip_addresses(
|
||||
&shared_cryptopair,
|
||||
first.to_string(),
|
||||
&shared_senders,
|
||||
&shared_messageslist,
|
||||
545,
|
||||
);
|
||||
} else {
|
||||
eprintln!("no valid socket addresses found in: {}", s);
|
||||
}
|
||||
}
|
||||
Err(e) => {
|
||||
eprintln!("invalid UTF-8 in socket address bytes: {}", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
Err(e) => eprintln!("failed to retrieve socket address: {}", e),
|
||||
}
|
||||
|
||||
tokio::time::sleep(std::time::Duration::from_millis(5000)).await;
|
||||
|
||||
Reference in New Issue
Block a user