summaryrefslogtreecommitdiffstats
path: root/src/main/java/derms/net/tomulticast/Message.java
diff options
context:
space:
mode:
authorSam Anthony <sam@samanthony.xyz>2024-11-16 15:54:22 -0500
committerSam Anthony <sam@samanthony.xyz>2024-11-16 15:54:22 -0500
commit35c2f2a917de223c658ecc594719edd09bead7cc (patch)
tree6568546cf457758dca4fee06a391f7f43130d835 /src/main/java/derms/net/tomulticast/Message.java
parent05c4e2b5770133228daff7c262945f078a4e4456 (diff)
downloadsoen423-35c2f2a917de223c658ecc594719edd09bead7cc.zip
TotalOrderMulticastSender
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 + "}";
+ }
+}