Moved XML message creation to RaceServer instead of ConnectionAcceptor.
RaceServer does not currently generate new XMLMessages - NYI. Added a sequence number to RaceDataSource - this is used to indicate that the data source has been modified. #story[1188]
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
package mock.model;
|
||||
|
||||
import network.AckSequencer;
|
||||
import network.Messages.*;
|
||||
import network.Messages.Enums.BoatLocationDeviceEnum;
|
||||
import network.Messages.Enums.XMLMessageType;
|
||||
import shared.model.Bearing;
|
||||
import shared.model.CompoundMark;
|
||||
import shared.model.Mark;
|
||||
@@ -22,10 +24,29 @@ public class RaceServer {
|
||||
*/
|
||||
private int boatLocationSequenceNumber = 1;
|
||||
|
||||
/**
|
||||
* The sequence number of race XML messages.
|
||||
*/
|
||||
private int raceXMLSeqNumber;
|
||||
|
||||
/**
|
||||
* The sequence number of boat XML messages.
|
||||
*/
|
||||
private int boatXMLSeqNumber;
|
||||
|
||||
/**
|
||||
* The sequence number of regatta XML messages.
|
||||
*/
|
||||
private int regattaXMLSeqNumber;
|
||||
|
||||
|
||||
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();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -45,9 +66,47 @@ public class RaceServer {
|
||||
snapshotMessages.add(parseRaceStatus());
|
||||
|
||||
latestMessages.setSnapshot(snapshotMessages);
|
||||
|
||||
updateXMLFiles();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Checks if the race/boat/regatta data sources have changed, and if they have, update their xml representations.
|
||||
*/
|
||||
private void updateXMLFiles() {
|
||||
updateRaceXMLFile();
|
||||
//updateBoatXMLFile();
|
||||
//updateRegattaXMLFile();
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the race data source has changed, and if it has, updates LatestMessages' race xml message.
|
||||
*/
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the boat data source has changed, and if it has, updates LatestMessages' boat xml message.
|
||||
*/
|
||||
private void updateBoatXMLFile() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the regatta data source has changed, and if it has, updates LatestMessages' regatta xml message.
|
||||
*/
|
||||
private void updateRegattaXMLFile() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses an individual marker boat, and returns it.
|
||||
* @param mark The marker boat to parse.
|
||||
@@ -178,4 +237,41 @@ public class RaceServer {
|
||||
|
||||
return raceStatus;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Creates an XMLMessage of a specified subtype using the xml contents string.
|
||||
* @param xmlString The contents of the xml file.
|
||||
* @param messageType The subtype of xml message (race, regatta, boat).
|
||||
* @return The created XMLMessage object.
|
||||
*/
|
||||
private XMLMessage createXMLMessage(String xmlString, XMLMessageType messageType) {
|
||||
|
||||
//Get the correct sequence number to use.
|
||||
int sequenceNumber = 0;
|
||||
if (messageType == XMLMessageType.RACE) {
|
||||
sequenceNumber = this.raceXMLSeqNumber;
|
||||
|
||||
} else if (messageType == XMLMessageType.BOAT) {
|
||||
sequenceNumber = this.boatXMLSeqNumber;
|
||||
|
||||
} else if (messageType == XMLMessageType.REGATTA) {
|
||||
sequenceNumber = this.regattaXMLSeqNumber;
|
||||
|
||||
}
|
||||
|
||||
//Create the message.
|
||||
XMLMessage message = new XMLMessage(
|
||||
XMLMessage.currentVersionNumber,
|
||||
AckSequencer.getNextAckNum(),
|
||||
System.currentTimeMillis(),
|
||||
messageType,
|
||||
sequenceNumber,
|
||||
xmlString);
|
||||
|
||||
|
||||
return message;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user