diff options
author | Magdalena Grodzińska <mag.grodzinska@gmail.com> | 2020-01-11 16:36:12 +0100 |
---|---|---|
committer | Magdalena Grodzińska <mag.grodzinska@gmail.com> | 2020-01-11 16:36:12 +0100 |
commit | a07c25266dc18f9ff3f0a23a8157fc478cdf5299 (patch) | |
tree | b7062c202f2a054d3b9ac69888519dd634190b66 /src/main/java/pl/edu/mimuw/cloudatlas/agent/modules | |
parent | c125370268544a1321aaa2152e200b5a74664880 (diff) |
Add setting fallback contacts
Diffstat (limited to 'src/main/java/pl/edu/mimuw/cloudatlas/agent/modules')
-rw-r--r-- | src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/Stanik.java | 41 |
1 files changed, 16 insertions, 25 deletions
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/Stanik.java b/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/Stanik.java index 3fca1d5..c713827 100644 --- a/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/Stanik.java +++ b/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/Stanik.java @@ -1,33 +1,11 @@ package pl.edu.mimuw.cloudatlas.agent.modules; import java.nio.file.Path; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; +import java.util.*; import java.util.Map.Entry; -import pl.edu.mimuw.cloudatlas.agent.messages.AgentMessage; -import pl.edu.mimuw.cloudatlas.agent.messages.GetStateMessage; -import pl.edu.mimuw.cloudatlas.agent.messages.RemoveZMIMessage; -import pl.edu.mimuw.cloudatlas.agent.messages.SetAttributeMessage; -import pl.edu.mimuw.cloudatlas.agent.messages.StateMessage; -import pl.edu.mimuw.cloudatlas.agent.messages.StanikMessage; -import pl.edu.mimuw.cloudatlas.agent.messages.UpdateAttributesMessage; -import pl.edu.mimuw.cloudatlas.agent.messages.UpdateQueriesMessage; -import pl.edu.mimuw.cloudatlas.model.Attribute; -import pl.edu.mimuw.cloudatlas.model.AttributesMap; -import pl.edu.mimuw.cloudatlas.model.AttributesUtil; -import pl.edu.mimuw.cloudatlas.model.PathName; -import pl.edu.mimuw.cloudatlas.model.Type; -import pl.edu.mimuw.cloudatlas.model.TypePrimitive; -import pl.edu.mimuw.cloudatlas.model.Value; -import pl.edu.mimuw.cloudatlas.model.ValueBoolean; -import pl.edu.mimuw.cloudatlas.model.ValueDuration; -import pl.edu.mimuw.cloudatlas.model.ValueQuery; -import pl.edu.mimuw.cloudatlas.model.ValueString; -import pl.edu.mimuw.cloudatlas.model.ValueTime; -import pl.edu.mimuw.cloudatlas.model.ValueUtils; -import pl.edu.mimuw.cloudatlas.model.ZMI; +import pl.edu.mimuw.cloudatlas.agent.messages.*; +import pl.edu.mimuw.cloudatlas.model.*; public class Stanik extends Module { private class InvalidUpdateAttributesMessage extends Exception { @@ -39,6 +17,8 @@ public class Stanik extends Module { private ZMI hierarchy; private HashMap<Attribute, Entry<ValueQuery, ValueTime>> queries; private long freshnessPeriod; + private Set<ValueContact> contacts; + private ValueTime contactsTimestamp; public Stanik(long freshnessPeriod) { super(ModuleType.STATE); @@ -46,6 +26,8 @@ public class Stanik extends Module { queries = new HashMap<Attribute, Entry<ValueQuery, ValueTime>>(); hierarchy.getAttributes().add("timestamp", new ValueTime(0l)); this.freshnessPeriod = freshnessPeriod; + this.contactsTimestamp = ValueUtils.currentTime(); + this.contacts = new HashSet<>(); } public Stanik() { @@ -69,6 +51,8 @@ public class Stanik extends Module { case UPDATE_QUERIES: handleUpdateQueries((UpdateQueriesMessage) message); break; + case UPDATE_CONTACTS: + handleUpdateContacts((UpdateContactsMessage) message); default: throw new InvalidMessageType("This type of message cannot be handled by Stanik"); } @@ -251,4 +235,11 @@ public class Stanik extends Module { public HashMap<Attribute, Entry<ValueQuery, ValueTime>> getQueries() { return queries; } + + private void handleUpdateContacts(UpdateContactsMessage message) { + if (message.getContacts() != null && !message.getContacts().isEmpty() && + ValueUtils.valueLower(contactsTimestamp, new ValueTime(message.getTimestamp()))) { + this.contacts = message.getContacts(); + } + } } |