package vooga.rts.networking.communications; /** * A Message is the object sent between the server and the client. * A Designer may subclass Message to send whatever form of data they wish. * There is also a SystemLevel Message subclass that is used to communicate * between the server for managerial tasks; the developer likely will not need * to worry about these. * * @author Henrique Moraes * @author David Winegar * */ public abstract class Message implements IMessage { private static final long serialVersionUID = 3906028159511905867L; private TimeStamp myTimeStamp; /** * Constructor for this class * Creates a timestamp for this message with the given time * as the initial time * * @param timeStamp timestamp passed in */ public Message (TimeStamp timeStamp) { myTimeStamp = timeStamp; } /** * Constructor for this class * Creates a timestamp for this message with the current system time * as the initial time */ public Message () { myTimeStamp = new SystemTimeStamp(); } /* * (non-Javadoc) * * @see vooga.rts.networking.communications.IMessage#getTimeStamp() */ @Override public TimeStamp getTimeStamp () { return myTimeStamp; } /* * (non-Javadoc) * * @see vooga.rts.networking.communications.IMessage#resetTime() */ @Override public void resetTime () { myTimeStamp.resetStamp(); } /* * (non-Javadoc) * * @see vooga.rts.networking.communications.IMessage#stampTime() */ @Override public void stampTime () { myTimeStamp.stamp(); } /* * (non-Javadoc) * * @see vooga.rts.networking.communications.IMessage#stampTime(long) */ @Override public void stampTime (long time) { myTimeStamp.stamp(time); } /* * (non-Javadoc) * * @see vooga.rts.networking.communications.IMessage#getInitialTime() */ @Override public long getInitialTime () { return myTimeStamp.getInitialTime(); } /* * (non-Javadoc) * * @see vooga.rts.networking.communications.IMessage#getFinalTime() */ @Override public long getFinalTime () { return myTimeStamp.getFinalTime(); } /* * (non-Javadoc) * * @see vooga.rts.networking.communications.IMessage#equals(java.lang.Object) */ @Override public boolean equals (Object object) { if (object == null) { return false; } if (!(object instanceof Message)) { return false; } Message m = (Message) object; return myTimeStamp.equals(m.getTimeStamp()); } /* * (non-Javadoc) * * @see vooga.rts.networking.communications.IMessage#hashCode() */ @Override public int hashCode () { return myTimeStamp.hashCode(); } /* * (non-Javadoc) * * @see * vooga.rts.networking.communications.IMessage#compareTo(vooga.rts.networking.communications * .Message) */ @Override public int compareTo (Message message) { return myTimeStamp.compareTo(message.getTimeStamp()); } }