mirror of
https://github.com/michaelrausch/Party-Parrots-At-Sea.git
synced 2026-05-09 14:28:43 +00:00
Fixed disconnection issues. Fix is only temporary until a consistent interface for disconnections exists.
#bug #implement
This commit is contained in:
@@ -142,18 +142,20 @@ public class ClientToServerThread implements Runnable {
|
||||
}
|
||||
} catch (ByteReadException e) {
|
||||
logger.warn("Byte read exception on ClientToServerThread", 1);
|
||||
closeSocket();
|
||||
notifyDisconnectListeners("Connection to server was interrupted");
|
||||
closeSocket();
|
||||
}
|
||||
}
|
||||
logger.warn("Closed connection to server", 1);
|
||||
closeSocket();
|
||||
notifyDisconnectListeners("Connection to server was terminated");
|
||||
closeSocket();
|
||||
}
|
||||
|
||||
private void notifyDisconnectListeners (String message) {
|
||||
for (DisconnectedFromHostListener listener : disconnectionListeners) {
|
||||
listener.notifYDisconnection(message);
|
||||
if (socketOpen) {
|
||||
for (DisconnectedFromHostListener listener : disconnectionListeners) {
|
||||
listener.notifYDisconnection(message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -167,8 +169,8 @@ public class ClientToServerThread implements Runnable {
|
||||
os.write(requestMessage.getBuffer());
|
||||
} catch (IOException e) {
|
||||
logger.error("Could not send registration request. Exiting");
|
||||
closeSocket();
|
||||
notifyDisconnectListeners("Failed to register with server");
|
||||
closeSocket();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -197,8 +199,8 @@ public class ClientToServerThread implements Runnable {
|
||||
else{
|
||||
alertErrorText = "Could not connect to server";
|
||||
}
|
||||
closeSocket();
|
||||
notifyDisconnectListeners(alertErrorText);
|
||||
closeSocket();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -208,7 +210,7 @@ public class ClientToServerThread implements Runnable {
|
||||
* - MAINTAIN_HEADING = DOWNWIND and UPWIND packets stop being sent.
|
||||
* @param actionType The boat action that will dictate packets sent.
|
||||
*/
|
||||
public void sendBoatActionMessage(BoatAction actionType) {
|
||||
public void sendBoatAction(BoatAction actionType) {
|
||||
switch (actionType) {
|
||||
case MAINTAIN_HEADING:
|
||||
if (upwindTimerFlag) {
|
||||
@@ -272,9 +274,9 @@ public class ClientToServerThread implements Runnable {
|
||||
try {
|
||||
os.write(message.getBuffer());
|
||||
} catch (IOException e) {
|
||||
logger.warn("IOException on attempting to sendBoatActionMessage from Client");
|
||||
closeSocket();
|
||||
logger.warn("IOException on attempting to sendBoatAction from Client");
|
||||
notifyDisconnectListeners("Cannot communicate with server");
|
||||
closeSocket();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -282,6 +284,7 @@ public class ClientToServerThread implements Runnable {
|
||||
private void closeSocket() {
|
||||
try {
|
||||
socket.close();
|
||||
socketOpen = false;
|
||||
} catch (IOException e) {
|
||||
logger.warn("IOException on attempting to close ClientToServerSocket");
|
||||
}
|
||||
@@ -318,8 +321,8 @@ public class ClientToServerThread implements Runnable {
|
||||
crcBuffer.write(currentByte);
|
||||
} catch (IOException e) {
|
||||
logger.warn("IOException on readByte Client side", 1);
|
||||
closeSocket();
|
||||
notifyDisconnectListeners("Cannot read from server.");
|
||||
closeSocket();
|
||||
}
|
||||
if (currentByte == -1) {
|
||||
throw new ByteReadException("InputStream reach end of stream");
|
||||
|
||||
@@ -104,6 +104,7 @@ public class GameClient {
|
||||
* @param portNumber Port to connect to.
|
||||
*/
|
||||
public void runAsHost(String ipAddress, Integer portNumber) {
|
||||
server = new MainServerThread();
|
||||
try {
|
||||
startClientToServerThread(ipAddress, portNumber);
|
||||
socketThread.addDisconnectionListener((cause) -> {
|
||||
@@ -126,6 +127,8 @@ public class GameClient {
|
||||
lobbyController.disableReadyButton();
|
||||
server.startGame();
|
||||
} else if (exitCause == CloseStatus.LEAVE) {
|
||||
server.terminate();
|
||||
server = null;
|
||||
loadStartScreen();
|
||||
}
|
||||
});
|
||||
@@ -370,13 +373,13 @@ public class GameClient {
|
||||
private void keyPressed(KeyEvent e) {
|
||||
switch (e.getCode()) {
|
||||
case SPACE: // align with vmg
|
||||
socketThread.sendBoatActionMessage(BoatAction.VMG); break;
|
||||
socketThread.sendBoatAction(BoatAction.VMG); break;
|
||||
case PAGE_UP: // upwind
|
||||
socketThread.sendBoatActionMessage(BoatAction.UPWIND); break;
|
||||
socketThread.sendBoatAction(BoatAction.UPWIND); break;
|
||||
case PAGE_DOWN: // downwind
|
||||
socketThread.sendBoatActionMessage(BoatAction.DOWNWIND); break;
|
||||
socketThread.sendBoatAction(BoatAction.DOWNWIND); break;
|
||||
case ENTER: // tack/gybe
|
||||
socketThread.sendBoatActionMessage(BoatAction.TACK_GYBE); break;
|
||||
socketThread.sendBoatAction(BoatAction.TACK_GYBE); break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -385,12 +388,12 @@ public class GameClient {
|
||||
switch (e.getCode()) {
|
||||
//TODO 12/07/17 Determine the sail state and send the appropriate packet (eg. if sails are in, send a sail out packet)
|
||||
case SHIFT: // sails in/sails out
|
||||
socketThread.sendBoatActionMessage(BoatAction.SAILS_IN);
|
||||
socketThread.sendBoatAction(BoatAction.SAILS_IN);
|
||||
allBoatsMap.get(socketThread.getClientId()).toggleSail();
|
||||
break;
|
||||
case PAGE_UP:
|
||||
case PAGE_DOWN:
|
||||
socketThread.sendBoatActionMessage(BoatAction.MAINTAIN_HEADING); break;
|
||||
socketThread.sendBoatAction(BoatAction.MAINTAIN_HEADING); break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user