diff options
Diffstat (limited to 'src/main/java/pl/edu/mimuw/cloudatlas/agent')
5 files changed, 24 insertions, 9 deletions
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/agent/Agent.java b/src/main/java/pl/edu/mimuw/cloudatlas/agent/Agent.java index a7d2d55..0cbda2d 100644 --- a/src/main/java/pl/edu/mimuw/cloudatlas/agent/Agent.java +++ b/src/main/java/pl/edu/mimuw/cloudatlas/agent/Agent.java @@ -38,7 +38,7 @@ public class Agent { agentConfig.runRegistry(eventBus); agentConfig.startNonModuleThreads(eventBus); - initZones(eventBus); + // initZones(eventBus); // TODO: make query period confiurable with config file and from tests diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/agent/EventBus.java b/src/main/java/pl/edu/mimuw/cloudatlas/agent/EventBus.java index a9b25ed..0e972f4 100644 --- a/src/main/java/pl/edu/mimuw/cloudatlas/agent/EventBus.java +++ b/src/main/java/pl/edu/mimuw/cloudatlas/agent/EventBus.java @@ -54,6 +54,7 @@ public class EventBus implements Runnable { } public void addMessage(AgentMessage msg) throws InterruptedException { + System.out.println("INFO: message added for " + msg.getDestinationModule().toString()); this.events.put(msg); } } diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/agent/HierarchyConfig.java b/src/main/java/pl/edu/mimuw/cloudatlas/agent/HierarchyConfig.java index 04b9b5b..dc5241d 100644 --- a/src/main/java/pl/edu/mimuw/cloudatlas/agent/HierarchyConfig.java +++ b/src/main/java/pl/edu/mimuw/cloudatlas/agent/HierarchyConfig.java @@ -71,7 +71,7 @@ public class HierarchyConfig { List<ZMI> siblings = getSiblings(root, path); filterEmptyContacts(siblings); if (siblings.isEmpty()) { - return selectFallbackContact(); + return selectFallbackContact(response.getContacts()); } ZMI zmi = selectZMI(siblings); ValueSet contactsValue = (ValueSet) zmi.getAttributes().getOrNull("contacts"); @@ -80,8 +80,12 @@ public class HierarchyConfig { } // TODO - private ValueContact selectFallbackContact() throws Exception { - return null; + private ValueContact selectFallbackContact(Set<ValueContact> contacts) throws Exception { + if (contacts.isEmpty()) { + return null; + } else { + return selectContactFromSet(contacts); + } } private ZMI selectZMI(List<ZMI> zmis) throws Exception { @@ -96,9 +100,9 @@ public class HierarchyConfig { throw new Exception("empty list passed to selectZMI"); } - private ValueContact selectContactFromSet(Set<Value> contacts) throws Exception { + private <T> ValueContact selectContactFromSet(Set<T> contacts) throws Exception { int i = random.nextInt(contacts.size()); - for (Value contact : contacts) { + for (T contact : contacts) { if (i == 0) { return (ValueContact) contact; } diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/agent/messages/StateMessage.java b/src/main/java/pl/edu/mimuw/cloudatlas/agent/messages/StateMessage.java index 759723b..806d41f 100644 --- a/src/main/java/pl/edu/mimuw/cloudatlas/agent/messages/StateMessage.java +++ b/src/main/java/pl/edu/mimuw/cloudatlas/agent/messages/StateMessage.java @@ -2,9 +2,11 @@ package pl.edu.mimuw.cloudatlas.agent.messages; import java.util.Map; import java.util.Map.Entry; +import java.util.Set; import pl.edu.mimuw.cloudatlas.agent.modules.ModuleType; import pl.edu.mimuw.cloudatlas.model.Attribute; +import pl.edu.mimuw.cloudatlas.model.ValueContact; import pl.edu.mimuw.cloudatlas.model.ValueQuery; import pl.edu.mimuw.cloudatlas.model.ValueTime; import pl.edu.mimuw.cloudatlas.model.ZMI; @@ -12,11 +14,13 @@ import pl.edu.mimuw.cloudatlas.model.ZMI; public class StateMessage extends ResponseMessage { private ZMI zmi; private Map<Attribute, Entry<ValueQuery, ValueTime>> queries; + private Set<ValueContact> contacts; - public StateMessage(String messageId, ModuleType destinationModule, long timestamp, long requestId, ZMI zmi, Map<Attribute, Entry<ValueQuery, ValueTime>> queries) { + public StateMessage(String messageId, ModuleType destinationModule, long timestamp, long requestId, ZMI zmi, Map<Attribute, Entry<ValueQuery, ValueTime>> queries, Set<ValueContact> contacts) { super(messageId, destinationModule, timestamp, Type.STATE, requestId); this.zmi = zmi; this.queries = queries; + this.contacts = contacts; } public StateMessage() {} @@ -28,4 +32,8 @@ public class StateMessage extends ResponseMessage { public Map<Attribute, Entry<ValueQuery, ValueTime>> getQueries() { return queries; } + + public Set<ValueContact> getContacts() { + return contacts; + } } 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 c713827..999c193 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 @@ -53,8 +53,9 @@ public class Stanik extends Module { break; case UPDATE_CONTACTS: handleUpdateContacts((UpdateContactsMessage) message); + break; default: - throw new InvalidMessageType("This type of message cannot be handled by Stanik"); + throw new InvalidMessageType("This type of message cannot be handled by Stanik" + message.getType().toString()); } } @@ -66,7 +67,8 @@ public class Stanik extends Module { 0, message.getRequestId(), hierarchy.clone(), - (HashMap<Attribute, Entry<ValueQuery, ValueTime>>) queries.clone() + (HashMap<Attribute, Entry<ValueQuery, ValueTime>>) queries.clone(), + contacts ); sendMessage(response); } |