diff --git a/src/main/java/seng302/App.java b/src/main/java/seng302/App.java index 5b308813..b1e68e98 100644 --- a/src/main/java/seng302/App.java +++ b/src/main/java/seng302/App.java @@ -22,6 +22,6 @@ public class App extends Application public static void main(String[] args) { new ServerThread("Racevision Test Server"); //new Thread(new Simulator(1000)).run(); - launch(args); + //launch(args); } } \ No newline at end of file diff --git a/src/main/java/seng302/server/ServerThread.java b/src/main/java/seng302/server/ServerThread.java index d648d243..2bb36072 100644 --- a/src/main/java/seng302/server/ServerThread.java +++ b/src/main/java/seng302/server/ServerThread.java @@ -24,7 +24,7 @@ public class ServerThread implements Runnable, Observer { private final int RACE_START_STATUS_PERIOD = 1000/2; private final int BOAT_LOCATION_PERIOD = 1000/5; private final int PORT_NUMBER = 8085; - private final int TIME_TILL_RACE_START = 10; + private final int TIME_TILL_RACE_START = 20; private static final int LOG_LEVEL = 1; public ServerThread(String threadName){ @@ -103,11 +103,22 @@ public class ServerThread implements Runnable, Observer { raceStatus = RaceStatus.STARTED; } else{ - raceStatus = RaceStatus.PRESTART; + long currentTime = System.currentTimeMillis()/1000; + long timeDifference = startTime - currentTime; + + if (timeDifference > 60*3){ + raceStatus = RaceStatus.PRESTART; + } + else if (timeDifference > 60){ + raceStatus = RaceStatus.WARNING; + } + else{ + raceStatus = RaceStatus.PREPARATORY; + } } } else{ - raceStatus = RaceStatus.NOTACTIVE; + raceStatus = RaceStatus.TERMINATED; } return new RaceStatusMessage(1, raceStatus, startTime, WindDirection.EAST, @@ -171,21 +182,23 @@ public class ServerThread implements Runnable, Observer { }, 0, RACE_START_STATUS_PERIOD); } + /** + * Start sending race start status messages until race starts + */ private void startSendingRaceStatusMessages(){ - serverLog("Sending Race Status Messages", 0); Timer t = new Timer(); t.schedule(new TimerTask() { @Override public void run() { - Message statusMessage = getRaceStatusMessage(); - + Message raceStatusMessage = getRaceStatusMessage(); try { - server.send(statusMessage); + server.send(raceStatusMessage); + } catch (IOException e) { System.out.print(""); } } - }, 100, RACE_STATUS_PERIOD); + }, 0, RACE_STATUS_PERIOD); } /** @@ -221,16 +234,18 @@ public class ServerThread implements Runnable, Observer { serverLog("Failed to bind socket: " + e.getMessage(), 0); } - startTime = (System.currentTimeMillis()/1000) + TIME_TILL_RACE_START; - // Wait for client to connect server.start(); + startTime = (System.currentTimeMillis()/1000) + TIME_TILL_RACE_START; + startSendingHeartbeats(); sendXml(); startSendingRaceStartStatusMessages(); startSendingRaceStatusMessages(); + //serverLog("Sending Race Status Messages", 0); + } /** diff --git a/src/main/java/seng302/server/StreamingServerSocket.java b/src/main/java/seng302/server/StreamingServerSocket.java index 0818bd9f..d86e441d 100644 --- a/src/main/java/seng302/server/StreamingServerSocket.java +++ b/src/main/java/seng302/server/StreamingServerSocket.java @@ -54,6 +54,7 @@ class StreamingServerSocket { //System.out.println(client); message.send(client); + seqNum++; } diff --git a/src/main/java/seng302/server/messages/BoatLocationMessage.java b/src/main/java/seng302/server/messages/BoatLocationMessage.java index 45dd3ad5..9638c0bd 100644 --- a/src/main/java/seng302/server/messages/BoatLocationMessage.java +++ b/src/main/java/seng302/server/messages/BoatLocationMessage.java @@ -135,7 +135,7 @@ public class BoatLocationMessage extends Message { heading = (heading + 180.0) % 360.0; - long headingToSend = (long)((heading/360.0)*65535.0); + long headingToSend = (long)((heading/360.0)*49152.0); putByte((byte) messageVersionNumber); putInt(time, 6); diff --git a/src/main/java/seng302/server/messages/Heartbeat.java b/src/main/java/seng302/server/messages/Heartbeat.java index 3660af23..8e619107 100644 --- a/src/main/java/seng302/server/messages/Heartbeat.java +++ b/src/main/java/seng302/server/messages/Heartbeat.java @@ -35,6 +35,7 @@ public class Heartbeat extends Message { putUnsignedInt(seqNo, 4); writeCRC(); + rewind(); outputStream.write(getBuffer()); } diff --git a/src/main/java/seng302/server/messages/MarkRoundingMessage.java b/src/main/java/seng302/server/messages/MarkRoundingMessage.java index 82ef685d..750efb22 100644 --- a/src/main/java/seng302/server/messages/MarkRoundingMessage.java +++ b/src/main/java/seng302/server/messages/MarkRoundingMessage.java @@ -55,6 +55,7 @@ public class MarkRoundingMessage extends Message{ putByte((byte) markId); writeCRC(); + rewind(); outputStream.write(getBuffer()); } diff --git a/src/main/java/seng302/server/messages/MessageType.java b/src/main/java/seng302/server/messages/MessageType.java index 01bad14b..be856dac 100644 --- a/src/main/java/seng302/server/messages/MessageType.java +++ b/src/main/java/seng302/server/messages/MessageType.java @@ -9,7 +9,7 @@ public enum MessageType { RACE_STATUS(12), DISPLAY_TEXT_MESSAGE(20), XML_MESSAGE(26), - RACE_START_STATUS(20), + RACE_START_STATUS(27), YACHT_EVENT_CODE(29), YACHT_ACTION_CODE(31), CHATTER_TEXT(36), diff --git a/src/main/java/seng302/server/messages/RaceStartStatusMessage.java b/src/main/java/seng302/server/messages/RaceStartStatusMessage.java index a89471b8..368a18fd 100644 --- a/src/main/java/seng302/server/messages/RaceStartStatusMessage.java +++ b/src/main/java/seng302/server/messages/RaceStartStatusMessage.java @@ -52,6 +52,7 @@ public class RaceStartStatusMessage extends Message { putUnsignedByte((byte) notificationType.getType()); writeCRC(); + rewind(); outputStream.write(getBuffer()); } diff --git a/src/main/java/seng302/server/messages/RaceStatusMessage.java b/src/main/java/seng302/server/messages/RaceStatusMessage.java index 37aa3fe7..84290c58 100644 --- a/src/main/java/seng302/server/messages/RaceStatusMessage.java +++ b/src/main/java/seng302/server/messages/RaceStatusMessage.java @@ -85,6 +85,8 @@ public class RaceStatusMessage extends Message{ } writeCRC(); + rewind(); + outputStream.write(getBuffer()); } diff --git a/src/main/java/seng302/server/messages/XMLMessage.java b/src/main/java/seng302/server/messages/XMLMessage.java index a0044ea7..2cf3a5b5 100644 --- a/src/main/java/seng302/server/messages/XMLMessage.java +++ b/src/main/java/seng302/server/messages/XMLMessage.java @@ -62,6 +62,7 @@ public class XMLMessage extends Message{ putBytes(content.getBytes()); writeCRC(); + rewind(); outputStream.write(getBuffer()); }