server handshake handling

This commit is contained in:
2026-01-05 02:48:58 +01:00
parent c748dfa71d
commit f51b8e999c
5 changed files with 96 additions and 12 deletions

View File

@@ -7,7 +7,7 @@ use egui::{
Align, Align2, Button, CentralPanel, CollapsingHeader, Context, Id, LayerId, Layout, Order,
Popup, ScrollArea, SidePanel, TextStyle, TopBottomPanel, Ui, ViewportCommand,
};
use std::collections::HashMap;
use std::{collections::HashMap, fmt::format};
enum ServerStatus {
Loading,
@@ -43,6 +43,8 @@ pub struct P2PClientApp {
show_network_popup: bool, // gérer selon besoin
error_message: Option<String>, // Some(message) -> afficher, None -> rien
//
active_server: String,
}
impl P2PClientApp {
@@ -69,6 +71,7 @@ impl P2PClientApp {
show_network_popup: false,
error_message: None,
connect_name_input: "bob".to_string(),
active_server: "".to_string(),
}
}
pub fn show_error(&mut self, msg: impl Into<String>) {
@@ -149,6 +152,7 @@ impl eframe::App for P2PClientApp {
self.server_status = ServerStatus::ConnectedHandshake;
}
NetworkEvent::Disconnected() => {
self.active_server = "".to_string();
self.connected_address = "".to_string();
self.known_peers.clear();
self.server_status = ServerStatus::NotConnected;
@@ -157,6 +161,14 @@ impl eframe::App for P2PClientApp {
self.show_error(err);
}
NetworkEvent::DataReceived(_, merkle_node) => todo!(),
NetworkEvent::HandshakeFailed() => {}
NetworkEvent::ServerHandshakeFailed(err) => {
self.active_server = "".to_string();
self.server_status = ServerStatus::NotConnected;
let err_msg = format!("Failed to connect to the server: {}", err);
self.show_error(err_msg);
let res = self.network_cmd_tx.send(NetworkCommand::ResetServerPeer());
}
}
}
@@ -289,7 +301,8 @@ impl eframe::App for P2PClientApp {
ui.label("No connection..");
}
ServerStatus::ConnectedHandshake => {
ui.label("📡");
let str = format!("📡 {}", self.active_server);
ui.label(str);
}
}
ui.add_space(ui.available_width() - 30.0);
@@ -355,6 +368,7 @@ impl eframe::App for P2PClientApp {
.button("Utiliser le peer en tant que serveur")
.clicked()
{
self.active_server = peer.to_string();
let res = self.network_cmd_tx.send(
NetworkCommand::ServerHandshake(
peer.to_string(),