server handshake gui
This commit is contained in:
@@ -13,7 +13,7 @@ use crate::{
|
||||
registration::{
|
||||
get_socket_address, parse_addresses, register_ip_addresses, register_with_the_server,
|
||||
},
|
||||
server_communication::get_peer_list,
|
||||
server_communication::{generate_id, get_peer_list},
|
||||
};
|
||||
use std::sync::{Arc, Mutex};
|
||||
use std::{
|
||||
@@ -55,6 +55,27 @@ impl P2PSharedData {
|
||||
pub fn cryptopair(&self) -> Arc<CryptographicSignature> {
|
||||
self.shared_cryptopair.clone()
|
||||
}
|
||||
pub fn messages_list(&self) -> Arc<Mutex<HashMap<i32, EventType>>> {
|
||||
self.shared_messageslist.clone()
|
||||
}
|
||||
pub fn senders(&self) -> Arc<MultipleSenders> {
|
||||
self.shared_senders.clone()
|
||||
}
|
||||
pub fn socket_ref(&self) -> &UdpSocket {
|
||||
&*self.shared_socket
|
||||
}
|
||||
|
||||
pub fn cryptopair_ref(&self) -> &CryptographicSignature {
|
||||
&*self.shared_cryptopair
|
||||
}
|
||||
|
||||
pub fn messages_list_ref(&self) -> &Mutex<HashMap<i32, EventType>> {
|
||||
&*self.shared_messageslist
|
||||
}
|
||||
|
||||
pub fn senders_ref(&self) -> &MultipleSenders {
|
||||
&*self.shared_senders
|
||||
}
|
||||
|
||||
pub fn add_message(&self, id: i32, evt: EventType) {
|
||||
let mut map = self.shared_messageslist.lock().unwrap();
|
||||
@@ -65,7 +86,7 @@ impl P2PSharedData {
|
||||
/// Messages sent to the Network thread by the GUI.
|
||||
pub enum NetworkCommand {
|
||||
ConnectToServerPut(String, String), // ServerIP
|
||||
ServerHandshake(String), // ServerName
|
||||
ServerHandshake(String, String), // ServerName
|
||||
FetchPeerList(String), // ServerIP
|
||||
RegisterAsPeer(String),
|
||||
Ping(),
|
||||
@@ -128,48 +149,55 @@ pub fn start_p2p_executor(
|
||||
// Check for commands from the GUI
|
||||
if let Ok(cmd) = cmd_rx.try_recv() {
|
||||
match cmd {
|
||||
NetworkCommand::ServerHandshake(username) => {
|
||||
let server_addr_query = get_socket_address(username);
|
||||
NetworkCommand::ServerHandshake(username, ip) => {
|
||||
if let Some(sd) = shared_data.as_ref() {
|
||||
println!("username:{}, ip:{}", username, ip);
|
||||
let server_addr_query = get_socket_address(username, ip);
|
||||
|
||||
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,
|
||||
);*/
|
||||
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(
|
||||
sd,
|
||||
*first, // copie le SocketAddr (implémente Copy pour SocketAddr)
|
||||
);
|
||||
register_ip_addresses(
|
||||
sd.cryptopair_ref(),
|
||||
first.to_string(),
|
||||
sd.senders_ref(),
|
||||
sd.messages_list_ref(),
|
||||
generate_id(),
|
||||
);
|
||||
|
||||
//let res = event_tx.send(NetworkEvent::Connected());
|
||||
} else {
|
||||
let res = event_tx
|
||||
.send(NetworkEvent::ConnectedHandshake());
|
||||
} else {
|
||||
//let res = event_tx.send(NetworkEvent::Error());
|
||||
eprintln!(
|
||||
"no valid socket addresses found in: {}",
|
||||
s
|
||||
);
|
||||
}
|
||||
}
|
||||
Err(e) => {
|
||||
//let res = event_tx.send(NetworkEvent::Error());
|
||||
eprintln!("no valid socket addresses found in: {}", s);
|
||||
eprintln!(
|
||||
"invalid UTF-8 in socket address bytes: {}",
|
||||
e
|
||||
);
|
||||
}
|
||||
}
|
||||
Err(e) => {
|
||||
//let res = event_tx.send(NetworkEvent::Error());
|
||||
eprintln!("invalid UTF-8 in socket address bytes: {}", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
Err(e) => {
|
||||
let mut err_msg =
|
||||
String::from("failed to retrieve socket address:");
|
||||
err_msg += &e.to_string();
|
||||
let res = event_tx.send(NetworkEvent::Error(err_msg));
|
||||
Err(e) => {
|
||||
let mut err_msg =
|
||||
String::from("failed to retrieve socket address:");
|
||||
err_msg += &e.to_string();
|
||||
let res = event_tx.send(NetworkEvent::Error(err_msg));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user