summaryrefslogtreecommitdiffstats
path: root/src/main/java/derms/net/tomulticast/Message.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/derms/net/tomulticast/Message.java')
-rw-r--r--src/main/java/derms/net/tomulticast/Message.java40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/main/java/derms/net/tomulticast/Message.java b/src/main/java/derms/net/tomulticast/Message.java
new file mode 100644
index 0000000..035e968
--- /dev/null
+++ b/src/main/java/derms/net/tomulticast/Message.java
@@ -0,0 +1,40 @@
+package derms.net.tomulticast;
+
+import derms.net.rmulticast.MessagePayload;
+
+class Message<T extends MessagePayload> implements MessagePayload {
+ long seq; // Sequence number.
+ T payload;
+
+ Message(long seq, T payload) {
+ this.seq = seq;
+ this.payload = payload;
+ }
+
+ @Override
+ public int hash() {
+ return (int) seq * payload.hash();
+ }
+
+ @Override
+ public int hashCode() {
+ return hash();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj == null)
+ return false;
+ if (obj.getClass() != this.getClass())
+ return false;
+ Message<?> other = (Message<?>) obj;
+ if (other.payload.getClass() != this.payload.getClass())
+ return false;
+ return other.seq == this.seq && other.hash() == this.hash();
+ }
+
+ @Override
+ public String toString() {
+ return getClass().getSimpleName() + "{" + seq + ", " + payload + "}";
+ }
+}