diff options
Diffstat (limited to 'src/main/java/derms')
| -rw-r--r-- | src/main/java/derms/net/rmulticast/Hashable.java | 5 | ||||
| -rw-r--r-- | src/main/java/derms/net/rmulticast/Message.java | 27 | ||||
| -rw-r--r-- | src/main/java/derms/net/rmulticast/MessageID.java | 14 |
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; + } +} |