m-chrzan.xyz
aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/pl/edu/mimuw/cloudatlas/agent/messages
diff options
context:
space:
mode:
authorMartin <marcin.j.chrzanowski@gmail.com>2020-01-10 16:26:00 +0100
committerGitHub <noreply@github.com>2020-01-10 16:26:00 +0100
commit3e3677a34ab63d05cbc7a3c45dca98a47fbac77f (patch)
treeabe2cc377960b47626bd38350c470104d1a1c1d2 /src/main/java/pl/edu/mimuw/cloudatlas/agent/messages
parent60025accad672dac8228b7bac1006126223e2e58 (diff)
parent98ec32765bd769b457561dd9fdf34fee544dd54b (diff)
Merge pull request #87 from m-chrzan/gossip-girl
Begin gossip girl
Diffstat (limited to 'src/main/java/pl/edu/mimuw/cloudatlas/agent/messages')
-rw-r--r--src/main/java/pl/edu/mimuw/cloudatlas/agent/messages/AttributesMessage.java31
-rw-r--r--src/main/java/pl/edu/mimuw/cloudatlas/agent/messages/GossipGirlMessage.java29
-rw-r--r--src/main/java/pl/edu/mimuw/cloudatlas/agent/messages/HejkaMessage.java32
-rw-r--r--src/main/java/pl/edu/mimuw/cloudatlas/agent/messages/InitiateGossipMessage.java24
-rw-r--r--src/main/java/pl/edu/mimuw/cloudatlas/agent/messages/NoCoTamMessage.java50
-rw-r--r--src/main/java/pl/edu/mimuw/cloudatlas/agent/messages/QueryMessage.java29
-rw-r--r--src/main/java/pl/edu/mimuw/cloudatlas/agent/messages/RemoteGossipGirlMessage.java28
7 files changed, 223 insertions, 0 deletions
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/agent/messages/AttributesMessage.java b/src/main/java/pl/edu/mimuw/cloudatlas/agent/messages/AttributesMessage.java
new file mode 100644
index 0000000..49bda14
--- /dev/null
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/agent/messages/AttributesMessage.java
@@ -0,0 +1,31 @@
+package pl.edu.mimuw.cloudatlas.agent.messages;
+
+import java.util.Map;
+
+import pl.edu.mimuw.cloudatlas.model.AttributesMap;
+import pl.edu.mimuw.cloudatlas.model.PathName;
+
+public class AttributesMessage extends RemoteGossipGirlMessage {
+ private PathName path;
+ private AttributesMap attributes;
+ private long receiverGossipId;
+
+ public AttributesMessage(String messageId, long timestamp, PathName path, AttributesMap attributes, long receiverGossipId) {
+ super(messageId, timestamp, Type.ATTRIBUTES);
+ this.path = path;
+ this.attributes = attributes;
+ this.receiverGossipId = receiverGossipId;
+ }
+
+ public PathName getPath() {
+ return path;
+ }
+
+ public AttributesMap getAttributes() {
+ return attributes;
+ }
+
+ public long getReceiverGossipId() {
+ return receiverGossipId;
+ }
+}
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/agent/messages/GossipGirlMessage.java b/src/main/java/pl/edu/mimuw/cloudatlas/agent/messages/GossipGirlMessage.java
new file mode 100644
index 0000000..508fe88
--- /dev/null
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/agent/messages/GossipGirlMessage.java
@@ -0,0 +1,29 @@
+package pl.edu.mimuw.cloudatlas.agent.messages;
+
+import pl.edu.mimuw.cloudatlas.agent.modules.Module;
+import pl.edu.mimuw.cloudatlas.agent.modules.ModuleType;
+
+public abstract class GossipGirlMessage extends AgentMessage {
+ public enum Type {
+ ATTRIBUTES,
+ HEJKA,
+ INITIATE,
+ NO_CO_TAM,
+ QUERY
+ }
+
+ private Type type;
+
+ public GossipGirlMessage(String messageId, long timestamp, Type type) {
+ super(messageId, ModuleType.GOSSIP, timestamp);
+ this.type = type;
+ }
+
+ public Type getType() {
+ return type;
+ }
+
+ public void callMe(Module module) throws InterruptedException, Module.InvalidMessageType {
+ module.handleTyped(this);
+ }
+}
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/agent/messages/HejkaMessage.java b/src/main/java/pl/edu/mimuw/cloudatlas/agent/messages/HejkaMessage.java
new file mode 100644
index 0000000..340d939
--- /dev/null
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/agent/messages/HejkaMessage.java
@@ -0,0 +1,32 @@
+package pl.edu.mimuw.cloudatlas.agent.messages;
+
+import java.util.Map;
+
+import pl.edu.mimuw.cloudatlas.model.Attribute;
+import pl.edu.mimuw.cloudatlas.model.PathName;
+import pl.edu.mimuw.cloudatlas.model.ValueTime;
+
+public class HejkaMessage extends RemoteGossipGirlMessage {
+ private long senderGossipId;
+ private Map<PathName, ValueTime> zoneTimestamps;
+ private Map<Attribute, ValueTime> queryTimestamps;
+
+ public HejkaMessage(String messageId, long timestamp, long senderGossipId, Map<PathName, ValueTime> zoneTimestamps, Map<Attribute, ValueTime> queryTimestamps) {
+ super(messageId, timestamp, Type.HEJKA);
+ this.senderGossipId = senderGossipId;
+ this.zoneTimestamps = zoneTimestamps;
+ this.queryTimestamps = queryTimestamps;
+ }
+
+ public long getSenderGossipId() {
+ return senderGossipId;
+ }
+
+ public Map<PathName, ValueTime> getZoneTimestamps() {
+ return zoneTimestamps;
+ }
+
+ public Map<Attribute, ValueTime> getQueryTimestamps() {
+ return queryTimestamps;
+ }
+}
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/agent/messages/InitiateGossipMessage.java b/src/main/java/pl/edu/mimuw/cloudatlas/agent/messages/InitiateGossipMessage.java
new file mode 100644
index 0000000..955570e
--- /dev/null
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/agent/messages/InitiateGossipMessage.java
@@ -0,0 +1,24 @@
+package pl.edu.mimuw.cloudatlas.agent.messages;
+
+import pl.edu.mimuw.cloudatlas.agent.modules.ModuleType;
+import pl.edu.mimuw.cloudatlas.model.PathName;
+import pl.edu.mimuw.cloudatlas.model.ValueContact;
+
+public class InitiateGossipMessage extends GossipGirlMessage {
+ private PathName ourPath;
+ private ValueContact theirContact;
+
+ public InitiateGossipMessage(String messageId, long timestamp, PathName ourPath, ValueContact theirContact) {
+ super(messageId, timestamp, Type.INITIATE);
+ this.ourPath = ourPath;
+ this.theirContact = theirContact;
+ }
+
+ public PathName getOurPath() {
+ return ourPath;
+ }
+
+ public ValueContact getTheirContact() {
+ return theirContact;
+ }
+}
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/agent/messages/NoCoTamMessage.java b/src/main/java/pl/edu/mimuw/cloudatlas/agent/messages/NoCoTamMessage.java
new file mode 100644
index 0000000..3dd0c4d
--- /dev/null
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/agent/messages/NoCoTamMessage.java
@@ -0,0 +1,50 @@
+package pl.edu.mimuw.cloudatlas.agent.messages;
+
+import java.util.Map;
+
+import pl.edu.mimuw.cloudatlas.model.Attribute;
+import pl.edu.mimuw.cloudatlas.model.PathName;
+import pl.edu.mimuw.cloudatlas.model.ValueTime;
+
+public class NoCoTamMessage extends RemoteGossipGirlMessage {
+ private long receiverGossipId;
+ private long senderGossipId;
+ private Map<PathName, ValueTime> zoneTimestamps;
+ private Map<Attribute, ValueTime> queryTimestamps;
+ private ValueTime hejkaSendTimestamp;
+ private ValueTime hejkaReceiveTimestamp;
+
+ public NoCoTamMessage(String messageId, long timestamp, long receiverGossipId, long senderGossipId, Map<PathName, ValueTime> zoneTimestamps, Map<Attribute, ValueTime> queryTimestamps, ValueTime hejkaSendTimestamp, ValueTime hejkaReceiveTimestamp) {
+ super(messageId, timestamp, Type.NO_CO_TAM);
+ this.receiverGossipId = receiverGossipId;
+ this.senderGossipId = senderGossipId;
+ this.zoneTimestamps = zoneTimestamps;
+ this.queryTimestamps = queryTimestamps;
+ this.hejkaSendTimestamp = hejkaSendTimestamp;
+ this.hejkaReceiveTimestamp = hejkaReceiveTimestamp;
+ }
+
+ public long getReceiverGossipId() {
+ return receiverGossipId;
+ }
+
+ public long getSenderGossipId() {
+ return senderGossipId;
+ }
+
+ public Map<PathName, ValueTime> getZoneTimestamps() {
+ return zoneTimestamps;
+ }
+
+ public Map<Attribute, ValueTime> getQueryTimestamps() {
+ return queryTimestamps;
+ }
+
+ public ValueTime getHejkaSendTimestamp() {
+ return hejkaSendTimestamp;
+ }
+
+ public ValueTime getHejkaReceiveTimestamp() {
+ return hejkaReceiveTimestamp;
+ }
+}
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/agent/messages/QueryMessage.java b/src/main/java/pl/edu/mimuw/cloudatlas/agent/messages/QueryMessage.java
new file mode 100644
index 0000000..2b3b064
--- /dev/null
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/agent/messages/QueryMessage.java
@@ -0,0 +1,29 @@
+package pl.edu.mimuw.cloudatlas.agent.messages;
+
+import pl.edu.mimuw.cloudatlas.model.Attribute;
+import pl.edu.mimuw.cloudatlas.model.ValueQuery;
+
+public class QueryMessage extends RemoteGossipGirlMessage {
+ private Attribute name;
+ private ValueQuery query;
+ private long receiverGossipId;
+
+ public QueryMessage(String messageId, long timestamp, Attribute name, ValueQuery query, long receiverGossipId) {
+ super(messageId, timestamp, Type.QUERY);
+ this.name = name;
+ this.query = query;
+ this.receiverGossipId = receiverGossipId;
+ }
+
+ public Attribute getName() {
+ return name;
+ }
+
+ public ValueQuery getQuery() {
+ return query;
+ }
+
+ public long getReceiverGossipId() {
+ return receiverGossipId;
+ }
+}
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/agent/messages/RemoteGossipGirlMessage.java b/src/main/java/pl/edu/mimuw/cloudatlas/agent/messages/RemoteGossipGirlMessage.java
new file mode 100644
index 0000000..0a3a868
--- /dev/null
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/agent/messages/RemoteGossipGirlMessage.java
@@ -0,0 +1,28 @@
+package pl.edu.mimuw.cloudatlas.agent.messages;
+
+import pl.edu.mimuw.cloudatlas.model.ValueTime;
+
+public class RemoteGossipGirlMessage extends GossipGirlMessage {
+ private ValueTime sentTimestamp;
+ private ValueTime receivedTimestamp;
+
+ public RemoteGossipGirlMessage(String messageId, long timestamp, Type type) {
+ super(messageId, timestamp, type);
+ }
+
+ public void setSentTimestamp(ValueTime sentTimestamp) {
+ this.sentTimestamp = sentTimestamp;
+ }
+
+ public void setReceivedTimestamp(ValueTime receivedTimestamp) {
+ this.receivedTimestamp = receivedTimestamp;
+ }
+
+ public ValueTime getSentTimestamp() {
+ return sentTimestamp;
+ }
+
+ public ValueTime getReceivedTimestamp() {
+ return receivedTimestamp;
+ }
+}