summaryrefslogtreecommitdiffstats
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/derms/net/rmulticast/Hashable.java5
-rw-r--r--src/main/java/derms/net/rmulticast/Message.java27
-rw-r--r--src/main/java/derms/net/rmulticast/MessageID.java14
3 files changed, 46 insertions, 0 deletions
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<T extends Serializable & Hashable> 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;
+ }
+}