server handshake handling
This commit is contained in:
@@ -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(),
|
||||
|
||||
Reference in New Issue
Block a user