From f71a12bfda65c28dd03fa61163795bdd53e60914 Mon Sep 17 00:00:00 2001 From: Sam Anthony Date: Thu, 14 Nov 2024 11:29:22 -0500 Subject: reliable multicast message class --- src/main/java/derms/net/rmulticast/Hashable.java | 5 +++++ src/main/java/derms/net/rmulticast/Message.java | 27 +++++++++++++++++++++++ src/main/java/derms/net/rmulticast/MessageID.java | 14 ++++++++++++ 3 files changed, 46 insertions(+) create mode 100644 src/main/java/derms/net/rmulticast/Hashable.java create mode 100644 src/main/java/derms/net/rmulticast/Message.java create mode 100644 src/main/java/derms/net/rmulticast/MessageID.java (limited to 'src/main/java') diff --git a/src/main/java/derms/net/rmulticast/Hashable.java b/src/main/java/derms/net/rmulticast/Hashable.java new file mode 100644 index 0000000..f00f62b --- /dev/null +++ b/src/main/java/derms/net/rmulticast/Hashable.java @@ -0,0 +1,5 @@ +package derms.net.rmulticast; + +public interface Hashable { + int hash(); +} diff --git a/src/main/java/derms/net/rmulticast/Message.java b/src/main/java/derms/net/rmulticast/Message.java new file mode 100644 index 0000000..6df283e --- /dev/null +++ b/src/main/java/derms/net/rmulticast/Message.java @@ -0,0 +1,27 @@ +package derms.net.rmulticast; + +import java.io.Serializable; +import java.net.InetAddress; + +class Message implements Serializable { + T payload; + InetAddress sender; + MessageID[] positiveAcks; // IDs of messages that this message positively acknowledges. + MessageID[] negativeAcks; // IDs of messages that this message negatively acknowledges. + + Message(T payload, InetAddress sender, MessageID[] positiveAcks, MessageID[] negativeAcks) { + this.payload = payload; + this.sender = sender; + this.positiveAcks = positiveAcks; + this.negativeAcks = negativeAcks; + } + + MessageID id() { + return new MessageID(hashCode()); + } + + @Override + public int hashCode() { + return payload.hash(); + } +} diff --git a/src/main/java/derms/net/rmulticast/MessageID.java b/src/main/java/derms/net/rmulticast/MessageID.java new file mode 100644 index 0000000..e6824ad --- /dev/null +++ b/src/main/java/derms/net/rmulticast/MessageID.java @@ -0,0 +1,14 @@ +package derms.net.rmulticast; + +class MessageID { + int id; + + MessageID(int id) { + this.id = id; + } + + @Override + public int hashCode() { + return id; + } +} -- cgit v1.2.3