summaryrefslogtreecommitdiffstats
path: root/src/main/java/derms/net/runicast/Message.java
diff options
context:
space:
mode:
authorSam Anthony <sam@samanthony.xyz>2024-11-22 12:02:08 -0500
committerSam Anthony <sam@samanthony.xyz>2024-11-22 12:02:08 -0500
commit43549dee0a8214c1bb02c874dcfd7ba37a8ef310 (patch)
tree12cd75a25518c6d0cad495e0c5eed65d996765b2 /src/main/java/derms/net/runicast/Message.java
parent91967cbd407254358ab768e74ebcfda8d4a30bc8 (diff)
downloadsoen423-43549dee0a8214c1bb02c874dcfd7ba37a8ef310.zip
ReliableUnicastSender
Diffstat (limited to 'src/main/java/derms/net/runicast/Message.java')
-rw-r--r--src/main/java/derms/net/runicast/Message.java33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/main/java/derms/net/runicast/Message.java b/src/main/java/derms/net/runicast/Message.java
new file mode 100644
index 0000000..802cdb5
--- /dev/null
+++ b/src/main/java/derms/net/runicast/Message.java
@@ -0,0 +1,33 @@
+package derms.net.runicast;
+
+import derms.net.MessagePayload;
+
+import java.io.Serializable;
+
+class Message<T extends MessagePayload> implements Serializable {
+ final long seq; // Sequence number.
+ final T payload;
+
+ Message(long seq, T payload) {
+ this.seq = seq;
+ this.payload = payload;
+ }
+
+ @Override
+ public int hashCode() { return (int) seq * payload.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.payload.equals(this.payload);
+ }
+
+ @Override
+ public String toString() { return getClass().getSimpleName() + "{" + seq + ", " + payload + "}"; }
+}