Fixed: Standing to Login
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user