Participants can now join during the warning period as well.
Added RaceDataSourceToXML. RaceServer now create an XMLMessage when the race's RaceDataSource changes. #story[1188]
This commit is contained in:
@@ -161,8 +161,6 @@ public class Event {
|
||||
this.connectionThread = new Thread(connectionAcceptor, "Event.Start()->ConnectionAcceptor thread");
|
||||
connectionThread.start();
|
||||
|
||||
sendXMLs();
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -175,18 +173,6 @@ public class Event {
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Sends out each xml string, via the mock output
|
||||
*/
|
||||
private void sendXMLs() {
|
||||
|
||||
connectionAcceptor.setRegattaXml(regattaXML);
|
||||
|
||||
connectionAcceptor.setRaceXml(raceXML);
|
||||
|
||||
connectionAcceptor.setBoatsXml(boatXML);
|
||||
}
|
||||
|
||||
|
||||
//TODO remove this after demo on 18th august!
|
||||
/**
|
||||
|
||||
@@ -109,6 +109,11 @@ public class ClientConnection implements Runnable {
|
||||
*/
|
||||
private ConnectionStateEnum connectionState = ConnectionStateEnum.UNKNOWN;
|
||||
|
||||
/**
|
||||
* The source ID that has been allocated to the client.
|
||||
* 0 means not allocated.
|
||||
*/
|
||||
private int allocatedSourceID = 0;
|
||||
|
||||
|
||||
|
||||
@@ -178,7 +183,7 @@ public class ClientConnection implements Runnable {
|
||||
|
||||
RequestToJoin requestToJoin = waitForRequestToJoin();
|
||||
|
||||
int allocatedSourceID = 0;
|
||||
allocatedSourceID = 0;
|
||||
|
||||
//If they want to participate, give them a source ID number.
|
||||
if (requestToJoin.getRequestType() == RequestToJoinEnum.PARTICIPANT) {
|
||||
@@ -283,6 +288,10 @@ public class ClientConnection implements Runnable {
|
||||
if (this.controllerServerThread != null) {
|
||||
this.controllerServerThread.interrupt();
|
||||
}
|
||||
|
||||
if (allocatedSourceID != 0) {
|
||||
sourceIdAllocator.returnSourceID(allocatedSourceID);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -71,7 +71,8 @@ public class RaceLogic implements RunnableWithFramePeriod, Observer {
|
||||
long previousFrameTime = System.currentTimeMillis();
|
||||
|
||||
while (((race.getRaceStatusEnum() == RaceStatusEnum.PRESTART)
|
||||
|| (race.getRaceStatusEnum() == RaceStatusEnum.NOT_ACTIVE)) && loopBool) {
|
||||
|| (race.getRaceStatusEnum() == RaceStatusEnum.NOT_ACTIVE)
|
||||
|| (race.getRaceStatusEnum() == RaceStatusEnum.WARNING)) && loopBool) {
|
||||
|
||||
long currentTime = System.currentTimeMillis();
|
||||
|
||||
@@ -87,6 +88,7 @@ public class RaceLogic implements RunnableWithFramePeriod, Observer {
|
||||
//Parse the race snapshot.
|
||||
server.parseSnapshot();
|
||||
|
||||
|
||||
waitForFramePeriod(previousFrameTime, currentTime, 50);
|
||||
previousFrameTime = currentTime;
|
||||
}
|
||||
|
||||
@@ -7,9 +7,15 @@ import network.Messages.Enums.XMLMessageType;
|
||||
import shared.model.Bearing;
|
||||
import shared.model.CompoundMark;
|
||||
import shared.model.Mark;
|
||||
import shared.xml.Race.RaceDataSourceToXML;
|
||||
import shared.xml.boats.BoatDataSourceToXML;
|
||||
import shared.xml.regatta.RegattaDataSourceToXML;
|
||||
|
||||
import javax.xml.bind.JAXBException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
/**
|
||||
* Created by connortaylorbrown on 2/08/17.
|
||||
@@ -27,26 +33,22 @@ public class RaceServer {
|
||||
/**
|
||||
* The sequence number of race XML messages.
|
||||
*/
|
||||
private int raceXMLSeqNumber;
|
||||
private int raceXMLSeqNumber = -1;
|
||||
|
||||
/**
|
||||
* The sequence number of boat XML messages.
|
||||
*/
|
||||
private int boatXMLSeqNumber;
|
||||
private int boatXMLSeqNumber = -1;
|
||||
|
||||
/**
|
||||
* The sequence number of regatta XML messages.
|
||||
*/
|
||||
private int regattaXMLSeqNumber;
|
||||
private int regattaXMLSeqNumber = -1;
|
||||
|
||||
|
||||
public RaceServer(MockRace race, LatestMessages latestMessages) {
|
||||
this.race = race;
|
||||
this.latestMessages = latestMessages;
|
||||
|
||||
this.raceXMLSeqNumber = race.getRaceDataSource().getSequenceNumber();
|
||||
//this.boatXMLSeqNumber = race.getBoatDataSource().getSequenceNumber();
|
||||
//this.regattaXMLSeqNumber = race.getRegattaDataSource().getSequenceNumber();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -85,11 +87,17 @@ public class RaceServer {
|
||||
*/
|
||||
private void updateRaceXMLFile() {
|
||||
if (raceXMLSeqNumber != race.getRaceDataSource().getSequenceNumber()) {
|
||||
//TODO generate XML string from race data source
|
||||
String raceXMLString = "test";//TODO
|
||||
XMLMessage message = createXMLMessage(raceXMLString, XMLMessageType.RACE);
|
||||
latestMessages.setXMLMessage(message);
|
||||
|
||||
raceXMLSeqNumber = race.getRaceDataSource().getSequenceNumber();
|
||||
try {
|
||||
String raceXMLString = RaceDataSourceToXML.toString(race.getRaceDataSource());
|
||||
XMLMessage message = createXMLMessage(raceXMLString, XMLMessageType.RACE);
|
||||
latestMessages.setXMLMessage(message);
|
||||
|
||||
} catch (JAXBException e) {
|
||||
Logger.getGlobal().log(Level.WARNING, "Could not serialise: " + race.getRaceDataSource(), e);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -36,7 +36,8 @@ public class SourceIdAllocator {
|
||||
*/
|
||||
public synchronized int allocateSourceID() throws SourceIDAllocationException {
|
||||
|
||||
if (mockRace.getRaceStatusEnum() != RaceStatusEnum.PRESTART) {
|
||||
if (!((mockRace.getRaceStatusEnum() == RaceStatusEnum.PRESTART)
|
||||
|| (mockRace.getRaceStatusEnum() == RaceStatusEnum.WARNING))) {
|
||||
throw new SourceIDAllocationException("Could not allocate a source ID. Can only allocate during pre-start period. It is currently: " + mockRace.getRaceStatusEnum());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user