Added keystroke frequency limit

Updated client and server log format

#story[988] #pair[hyi25, zyt10]
This commit is contained in:
Zhi You Tan
2017-07-25 15:13:48 +12:00
parent 3785cd705f
commit 1a867be387
5 changed files with 45 additions and 32 deletions
@@ -119,7 +119,6 @@ public class ClientPacketParser {
*/ */
private static void extractHeartBeat(StreamPacket packet) { private static void extractHeartBeat(StreamPacket packet) {
long heartbeat = bytesToLong(packet.getPayload()); long heartbeat = bytesToLong(packet.getPayload());
System.out.println("[CLIENT] Received heartbeat = " + heartbeat);
} }
private static String getTimeZoneString() { private static String getTimeZoneString() {
@@ -6,6 +6,7 @@ import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.net.Socket; import java.net.Socket;
import java.net.UnknownHostException; import java.net.UnknownHostException;
import java.time.LocalDateTime;
import java.util.zip.CRC32; import java.util.zip.CRC32;
import java.util.zip.Checksum; import java.util.zip.Checksum;
@@ -42,7 +43,7 @@ public class ClientToServerThread implements Runnable {
clientLog("Successful handshake. Allocated ID: " + ourID, 1); clientLog("Successful handshake. Allocated ID: " + ourID, 1);
ClientState.setClientSourceId(String.valueOf(ourID)); ClientState.setClientSourceId(String.valueOf(ourID));
} else { } else {
clientLog("Unsuccessful handhsake", 1); clientLog("Unsuccessful handshake", 1);
closeSocket(); closeSocket();
return; return;
} }
@@ -54,7 +55,7 @@ public class ClientToServerThread implements Runnable {
static void clientLog(String message, int logLevel){ static void clientLog(String message, int logLevel){
if(logLevel <= LOG_LEVEL){ if(logLevel <= LOG_LEVEL){
System.out.println("[CLIENT] " + message); System.out.println("[CLIENT " + LocalDateTime.now().toLocalTime().toString() + "] " + message);
} }
} }
@@ -105,7 +106,7 @@ public class ClientToServerThread implements Runnable {
} }
} }
closeSocket(); closeSocket();
System.out.println("[CLIENT] Disconnected from server"); clientLog("Disconnected from server", 0);
} }
@@ -19,6 +19,8 @@ public class Controller implements Initializable {
@FXML @FXML
private AnchorPane contentPane; private AnchorPane contentPane;
private ClientToServerThread clientToServerThread; private ClientToServerThread clientToServerThread;
private long lastSendingTime;
private int KEY_STROKE_SENDING_FREQUENCY = 50;
private Object setContentPane(String jfxUrl) { private Object setContentPane(String jfxUrl) {
try { try {
@@ -43,35 +45,41 @@ public class Controller implements Initializable {
StartScreenController startScreenController = (StartScreenController) setContentPane("/views/StartScreenView.fxml"); StartScreenController startScreenController = (StartScreenController) setContentPane("/views/StartScreenView.fxml");
startScreenController.setController(this); startScreenController.setController(this);
ClientPacketParser.boatLocations.clear(); ClientPacketParser.boatLocations.clear();
lastSendingTime = System.currentTimeMillis();
} }
/** Handle the key-pressed event from the text field. */ /** Handle the key-pressed event from the text field. */
public void keyPressed(KeyEvent e) { public void keyPressed(KeyEvent e) {
BoatActionMessage boatActionMessage; BoatActionMessage boatActionMessage;
switch (e.getCode()){ long currentTime = System.currentTimeMillis();
case SPACE: // align with vmg if (currentTime - lastSendingTime > KEY_STROKE_SENDING_FREQUENCY) {
boatActionMessage = new BoatActionMessage(BoatActionType.VMG); lastSendingTime = currentTime;
clientToServerThread.sendBoatActionMessage(boatActionMessage); switch (e.getCode()) {
break; case SPACE: // align with vmg
case PAGE_UP: // upwind boatActionMessage = new BoatActionMessage(BoatActionType.VMG);
boatActionMessage = new BoatActionMessage(BoatActionType.UPWIND); clientToServerThread.sendBoatActionMessage(boatActionMessage);
clientToServerThread.sendBoatActionMessage(boatActionMessage); break;
break; case PAGE_UP: // upwind
case PAGE_DOWN: // downwind boatActionMessage = new BoatActionMessage(BoatActionType.UPWIND);
boatActionMessage = new BoatActionMessage(BoatActionType.DOWNWIND); clientToServerThread.sendBoatActionMessage(boatActionMessage);
clientToServerThread.sendBoatActionMessage(boatActionMessage); break;
break; case PAGE_DOWN: // downwind
case ENTER: // tack/gybe boatActionMessage = new BoatActionMessage(BoatActionType.DOWNWIND);
boatActionMessage = new BoatActionMessage(BoatActionType.TACK_GYBE); clientToServerThread.sendBoatActionMessage(boatActionMessage);
clientToServerThread.sendBoatActionMessage(boatActionMessage); break;
break; case ENTER: // tack/gybe
//TODO Allow a zoom in and zoom out methods boatActionMessage = new BoatActionMessage(BoatActionType.TACK_GYBE);
case Z: // zoom in clientToServerThread.sendBoatActionMessage(boatActionMessage);
System.out.println("Zoom in"); break;
break; //TODO Allow a zoom in and zoom out methods
case X: // zoom out case Z: // zoom in
System.out.println("Zoom out"); System.out.println("Zoom in");
break; break;
case X: // zoom out
System.out.println("Zoom out");
break;
}
} }
} }
@@ -1,5 +1,6 @@
package seng302.gameServer; package seng302.gameServer;
import java.time.LocalDateTime;
import java.util.Observable; import java.util.Observable;
import seng302.client.ClientPacketParser; import seng302.client.ClientPacketParser;
import seng302.models.Player; import seng302.models.Player;
@@ -108,7 +109,7 @@ public class MainServerThread extends Observable implements Runnable, PacketBuff
static void serverLog(String message, int logLevel){ static void serverLog(String message, int logLevel){
if(logLevel <= LOG_LEVEL){ if(logLevel <= LOG_LEVEL){
System.out.println("[SERVER] " + message); System.out.println("[SERVER " + LocalDateTime.now().toLocalTime().toString() + "] " + message);
} }
} }
@@ -6,6 +6,8 @@ import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.net.Socket; import java.net.Socket;
import java.net.SocketException;
import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Observable; import java.util.Observable;
@@ -97,7 +99,7 @@ public class ServerToClientThread implements Runnable, Observer {
static void serverLog(String message, int logLevel){ static void serverLog(String message, int logLevel){
if(logLevel <= LOG_LEVEL){ if(logLevel <= LOG_LEVEL){
System.out.println("[SERVER] " + message); System.out.println("[SERVER " + LocalDateTime.now().toLocalTime().toString() + "] " + message);
} }
} }
@@ -234,8 +236,8 @@ public class ServerToClientThread implements Runnable, Observer {
} }
} catch (Exception e) { } catch (Exception e) {
// TODO: 24/07/17 zyt10 - fix a logic here when a client disconnected // TODO: 24/07/17 zyt10 - fix a logic here when a client disconnected
serverLog("ERROR OCCURRED, CLOSING SERVER CONNECTION: " + socket.getRemoteSocketAddress().toString(), 1); // serverLog("ERROR OCCURRED, CLOSING SERVER CONNECTION: " + socket.getRemoteSocketAddress().toString(), 1);
e.printStackTrace(); // e.printStackTrace();
closeSocket(); closeSocket();
return; return;
} }
@@ -346,6 +348,8 @@ public class ServerToClientThread implements Runnable, Observer {
public void sendMessage(Message message){ public void sendMessage(Message message){
try { try {
os.write(message.getBuffer()); os.write(message.getBuffer());
} catch (SocketException e) {
serverLog("Player " + sourceId + " " + e.getMessage(), 0);
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }