diff options
Diffstat (limited to 'src/main/java/pl/edu/mimuw/cloudatlas/agent/messages')
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; +    } +} |