Added LatestMessages to network.Messages. This is an object that encapsulates the latest up to date set of race messages.
Race stores a reference to it. MockRace writes to it, and eventually, VisualiserRace will read from it. Updated MockRace, MockOutput, Event to use it. Angle now implements hashCode().main
parent
3a0b81834f
commit
8e18ad62ca
@ -0,0 +1,142 @@
|
|||||||
|
package network.Messages;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class contains a set of the latest messages received (e.g., the latest RaceStatus, the latest BoatLocation for each boat, etc...).
|
||||||
|
*/
|
||||||
|
public class LatestMessages {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The latest RaceStatus message.
|
||||||
|
*/
|
||||||
|
private RaceStatus raceStatus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A map of the last BoatStatus message received, for each boat.
|
||||||
|
*/
|
||||||
|
private final Map<Integer, BoatStatus> boatStatusMap = new HashMap<>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A map of the last BoatLocation message received, for each boat.
|
||||||
|
*/
|
||||||
|
private final Map<Integer, BoatLocation> boatLocationMap = new HashMap<>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The last AverageWind message received.
|
||||||
|
*/
|
||||||
|
private AverageWind averageWind;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The last CourseWinds message received.
|
||||||
|
*/
|
||||||
|
private CourseWinds courseWinds;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ctor.
|
||||||
|
*/
|
||||||
|
public LatestMessages() {
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the latest RaceStatus message received.
|
||||||
|
* @return The latest RaceStatus message received.
|
||||||
|
*/
|
||||||
|
public RaceStatus getRaceStatus() {
|
||||||
|
return raceStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the latest RaceStatus message received.
|
||||||
|
* @param raceStatus The new RaceStatus message to store.
|
||||||
|
*/
|
||||||
|
public void setRaceStatus(RaceStatus raceStatus) {
|
||||||
|
this.raceStatus = raceStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the latest BoatStatus message received for a given boat.
|
||||||
|
* @param sourceID Source ID of the boat.
|
||||||
|
* @return The latest BoatStatus message for the specified boat.
|
||||||
|
*/
|
||||||
|
public BoatStatus getBoatStatus(int sourceID) {
|
||||||
|
return boatStatusMap.get(sourceID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Inserts a BoatStatus message for a given boat.
|
||||||
|
* @param boatStatus The BoatStatus message to set.
|
||||||
|
*/
|
||||||
|
public void setBoatStatus(BoatStatus boatStatus) {
|
||||||
|
boatStatusMap.put(boatStatus.getSourceID(), boatStatus);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the latest BoatLocation message received for a given boat.
|
||||||
|
* @param sourceID Source ID of the boat.
|
||||||
|
* @return The latest BoatLocation message for the specified boat.
|
||||||
|
*/
|
||||||
|
public BoatLocation getBoatLocation(int sourceID) {
|
||||||
|
return boatLocationMap.get(sourceID);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Inserts a BoatLocation message for a given boat.
|
||||||
|
* @param boatLocation The BoatLocation message to set.
|
||||||
|
*/
|
||||||
|
public void setBoatLocation(BoatLocation boatLocation) {
|
||||||
|
//TODO should compare the sequence number of the new boatLocation with the existing boatLocation for this boat (if it exists), and use the newer one.
|
||||||
|
boatLocationMap.put(boatLocation.getSourceID(), boatLocation);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the latest AverageWind message received.
|
||||||
|
* @return The latest AverageWind message received.
|
||||||
|
*/
|
||||||
|
public AverageWind getAverageWind() {
|
||||||
|
return averageWind;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the latest AverageWind message received.
|
||||||
|
* @param averageWind The new AverageWind message to store.
|
||||||
|
*/
|
||||||
|
public void setAverageWind(AverageWind averageWind) {
|
||||||
|
this.averageWind = averageWind;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the latest CourseWinds message received.
|
||||||
|
* @return The latest CourseWinds message received.
|
||||||
|
*/
|
||||||
|
public CourseWinds getCourseWinds() {
|
||||||
|
return courseWinds;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the latest CourseWinds message received.
|
||||||
|
* @param courseWinds The new CourseWinds message to store.
|
||||||
|
*/
|
||||||
|
public void setCourseWinds(CourseWinds courseWinds) {
|
||||||
|
this.courseWinds = courseWinds;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Map<Integer, BoatLocation> getBoatLocationMap() {
|
||||||
|
return boatLocationMap;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in new issue