From 29ef4063f386aeeb7876dad4308d54f44839d0b0 Mon Sep 17 00:00:00 2001 From: filipekt Date: Thu, 5 Feb 2015 22:37:35 +0100 Subject: [PATCH] Ensemble logging now called at proper places --- .../cuni/mff/d3s/deeco/task/EnsembleLogger.java | 15 ++++++++++++--- .../cz/cuni/mff/d3s/deeco/task/EnsembleTask.java | 7 +++++-- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/jdeeco-core/src/cz/cuni/mff/d3s/deeco/task/EnsembleLogger.java b/jdeeco-core/src/cz/cuni/mff/d3s/deeco/task/EnsembleLogger.java index 53ba8c256..f0d63fc92 100644 --- a/jdeeco-core/src/cz/cuni/mff/d3s/deeco/task/EnsembleLogger.java +++ b/jdeeco-core/src/cz/cuni/mff/d3s/deeco/task/EnsembleLogger.java @@ -238,16 +238,25 @@ private void setShutdownHook(){ * @param shadowKnowledgeManager Knowledge of the other component * @param timeProvider Used to get the current time * @param membership The current value of the membership condition + * @param reversedRoles If true, the agent whose knowledge is in shadowKnowledgeManager + * is consider as the coordinator. If false, it is considered as a member. */ public void logEvent(EnsembleController ensembleController, ReadOnlyKnowledgeManager shadowKnowledgeManager, - CurrentTimeProvider timeProvider, boolean membership){ + CurrentTimeProvider timeProvider, boolean membership, boolean reversedRoles){ if ((out == null) || (ensembleController == null) || (shadowKnowledgeManager == null) || (timeProvider == null)){ return; } long timeSeconds = timeProvider.getCurrentMilliseconds() / 1000L; String ensembleName = ensembleController.getEnsembleDefinition().getName(); - String coordinatorID = ensembleController.getComponentInstance().getKnowledgeManager().getId(); - String memberID = shadowKnowledgeManager.getId(); + String coordinatorID; + String memberID; + if (reversedRoles){ + memberID = ensembleController.getComponentInstance().getKnowledgeManager().getId(); + coordinatorID = shadowKnowledgeManager.getId(); + } else { + coordinatorID = ensembleController.getComponentInstance().getKnowledgeManager().getId(); + memberID = shadowKnowledgeManager.getId(); + } EnsembleLogger.MembershipRecord mr = new MembershipRecord(ensembleName, coordinatorID, memberID); boolean oldMembership = membershipRecords.get(mr) == null ? false : membershipRecords.get(mr); if (oldMembership != membership){ diff --git a/jdeeco-core/src/cz/cuni/mff/d3s/deeco/task/EnsembleTask.java b/jdeeco-core/src/cz/cuni/mff/d3s/deeco/task/EnsembleTask.java index 6b0cd8306..a11c03975 100644 --- a/jdeeco-core/src/cz/cuni/mff/d3s/deeco/task/EnsembleTask.java +++ b/jdeeco-core/src/cz/cuni/mff/d3s/deeco/task/EnsembleTask.java @@ -672,14 +672,17 @@ private void evaluateMembershipAndPerformExchange(ReadOnlyKnowledgeManager shado coordinatorExchangePerformed = performExchange(PathRoot.COORDINATOR, shadowKnowledgeManager); membership = true; } - EnsembleLogger.getInstance().logEvent(ensembleController, shadowKnowledgeManager, scheduler, membership); + EnsembleLogger.getInstance().logEvent(ensembleController, shadowKnowledgeManager, scheduler, membership, false); // Do the same with the roles exchanged + membership = false; if (checkMembership(PathRoot.MEMBER, shadowKnowledgeManager) && securityChecker.checkSecurity(PathRoot.MEMBER, shadowKnowledgeManager)) { architectureObserver.ensembleFormed(ensembleController.getEnsembleDefinition(), ensembleController.getComponentInstance(), shadowKnowledgeManager.getId(), ensembleController.getComponentInstance().getKnowledgeManager().getId()); - memberExchangePerformed = performExchange(PathRoot.MEMBER, shadowKnowledgeManager); + memberExchangePerformed = performExchange(PathRoot.MEMBER, shadowKnowledgeManager); + membership = true; } + EnsembleLogger.getInstance().logEvent(ensembleController, shadowKnowledgeManager, scheduler, membership, true); if (coordinatorExchangePerformed || memberExchangePerformed) { invokeRatingsProcess(shadowKnowledgeManager.getId());