Fixed: Standing to Login

This commit is contained in:
rubenpirreram
2026-05-26 21:16:37 +02:00
parent 251795e0e4
commit a124feb639
5 changed files with 27 additions and 11 deletions
@@ -103,16 +103,18 @@ public class RMIClient implements IClient {
stub.ping(username); stub.ping(username);
} catch (RemoteException e) { } catch (RemoteException e) {
disconnect(); disconnect();
controller.view.showError(ErrorType.SERVER_CRASHED,ErrorType.SERVER_CRASHED.toString());
} }
}); });
try { try {
future.get(PING_TIMEOUT_MS, TimeUnit.MILLISECONDS); // mirrors setSoTimeout(5000) future.get(PING_TIMEOUT_MS, TimeUnit.MILLISECONDS); // mirrors setSoTimeout(5000)
} catch (TimeoutException e) { } catch (TimeoutException e) {
future.cancel(true); future.cancel(true);
//error sending controller.view.showError(ErrorType.SERVER_CRASHED,ErrorType.SERVER_CRASHED.toString());
disconnect(); disconnect();
} catch (Exception e) { } catch (Exception e) {
disconnect(); disconnect();
controller.view.showError(ErrorType.SERVER_CRASHED,ErrorType.SERVER_CRASHED.toString());
} }
}, 0, PING_INTERVAL_S, TimeUnit.SECONDS); }, 0, PING_INTERVAL_S, TimeUnit.SECONDS);
} }
@@ -128,7 +130,6 @@ public class RMIClient implements IClient {
if (pingSender != null) pingSender.shutdownNow(); if (pingSender != null) pingSender.shutdownNow();
controller.miniModel=null; controller.miniModel=null;
controller.setClient(null); controller.setClient(null);
controller.view.showError(ErrorType.SERVER_CRASHED,ErrorType.SERVER_CRASHED.toString());
} }
@@ -121,7 +121,12 @@ public class TCPClient implements IClient {
} catch (IOException e) { } catch (IOException e) {
sender.shutdownNow(); sender.shutdownNow();
if(running)
{
disconnect(); disconnect();
controller.view.showError(ErrorType.SERVER_CRASHED,ErrorType.SERVER_CRASHED.toString());
}
} }
}, 0, 3, TimeUnit.SECONDS); }, 0, 3, TimeUnit.SECONDS);
@@ -131,6 +136,7 @@ public class TCPClient implements IClient {
int b = heartbeatIn.read(); int b = heartbeatIn.read();
if (b == -1 || b != PONG) { if (b == -1 || b != PONG) {
disconnect(); disconnect();
controller.view.showError(ErrorType.SERVER_CRASHED,ErrorType.SERVER_CRASHED.toString());
break; break;
} }
// pong ricevuto → server vivo // pong ricevuto → server vivo
@@ -138,8 +144,15 @@ public class TCPClient implements IClient {
} catch (SocketTimeoutException e) { } catch (SocketTimeoutException e) {
System.out.println("Server heartbeat timeout"); System.out.println("Server heartbeat timeout");
disconnect(); disconnect();
controller.view.showError(ErrorType.SERVER_CRASHED,ErrorType.SERVER_CRASHED.toString());
} catch (IOException e) { } catch (IOException e) {
if(running)
{
disconnect(); disconnect();
controller.view.showError(ErrorType.SERVER_CRASHED,ErrorType.SERVER_CRASHED.toString());
}
} finally { } finally {
sender.shutdownNow(); sender.shutdownNow();
} }
@@ -151,7 +164,6 @@ public class TCPClient implements IClient {
try { heartbeatSocket.close(); } catch (IOException ignored) {} try { heartbeatSocket.close(); } catch (IOException ignored) {}
controller.setClient(null); controller.setClient(null);
controller.setModel(null); controller.setModel(null);
controller.view.showError(ErrorType.SERVER_CRASHED,ErrorType.SERVER_CRASHED.toString());
} }
@@ -168,7 +180,6 @@ public class TCPClient implements IClient {
try { try {
read = socketReceive.readObject(); read = socketReceive.readObject();
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace();
break; break;
} }
@@ -62,7 +62,10 @@ public class GUI extends Application implements IView {
loaderLeaderboard = new FXMLLoader(getClass().getResource("/GUIScene/standing.fxml")); loaderLeaderboard = new FXMLLoader(getClass().getResource("/GUIScene/standing.fxml"));
leaderboardScene = new Scene(loaderLeaderboard.load()); leaderboardScene = new Scene(loaderLeaderboard.load());
controllerLeaderboard = loaderLeaderboard.getController(); controllerLeaderboard = loaderLeaderboard.getController();
controllerLeaderboard.setController(controller,primaryStage,loginScene); controllerLeaderboard.setController(controller,()->{
primaryStage.setScene(loginScene);
controllerLogin.showError("");
},loginScene);
@@ -46,6 +46,7 @@ public class LeaderboardFXMLController {
private static final Map<String, Image> imageCache = new HashMap<>(); private static final Map<String, Image> imageCache = new HashMap<>();
private Scene loginScene; private Scene loginScene;
private Stage primaryStage; private Stage primaryStage;
private Runnable action;
private Image loadImage(String path) { private Image loadImage(String path) {
return imageCache.computeIfAbsent(path, return imageCache.computeIfAbsent(path,
@@ -53,10 +54,10 @@ public class LeaderboardFXMLController {
} }
public void setController(ClientController controller, Stage primaryStage, Scene loginScene) { public void setController(ClientController controller, Runnable action, Scene loginScene) {
this.controller = controller; this.controller = controller;
this.loginScene=loginScene; this.loginScene=loginScene;
this.primaryStage=primaryStage; this.action=action;
} }
@@ -363,6 +364,6 @@ public class LeaderboardFXMLController {
@FXML @FXML
private void onNewGame() { private void onNewGame() {
controller.disconnect(); controller.disconnect();
primaryStage.setScene(loginScene); action.run();
} }
} }
@@ -176,7 +176,7 @@ public class LoginFXMLController {
labelErrore.setTextFill(Color.web("#e05050")); labelErrore.setTextFill(Color.web("#e05050"));
labelErrore.setText(errorType.toString()); labelErrore.setText(errorType.toString());
} }
private void showError(String msg) { public void showError(String msg) {
labelErrore.setTextFill(Color.web("#e05050")); labelErrore.setTextFill(Color.web("#e05050"));
labelErrore.setText(msg); labelErrore.setText(msg);
} }