From: <xsp...@us...> - 2016-04-12 12:30:53
|
Revision: 1900 http://sourceforge.net/p/jason/svn/1900 Author: xsplyter Date: 2016-04-12 12:30:50 +0000 (Tue, 12 Apr 2016) Log Message: ----------- Refactoring of the sleep/wakeup methods Modified Paths: -------------- trunk/src/jason/architecture/AgArch.java trunk/src/jason/asSemantics/ConcurrentInternalAction.java trunk/src/jason/asSemantics/GoalListenerForMetaEvents.java trunk/src/jason/asSemantics/TransitionSystem.java trunk/src/jason/infra/centralised/CentralisedAgArch.java trunk/src/jason/infra/centralised/CentralisedAgArchAsynchronous.java trunk/src/jason/infra/centralised/CentralisedEnvironment.java trunk/src/jason/infra/components/ActComponent.java trunk/src/jason/infra/components/AgentComponent.java trunk/src/jason/infra/components/CircumstanceListenerComponents.java trunk/src/jason/infra/components/DeliberateComponent.java trunk/src/jason/infra/components/SenseComponent.java trunk/src/jason/stdlib/send.java trunk/src/jason/stdlib/wait.java Modified: trunk/src/jason/architecture/AgArch.java =================================================================== --- trunk/src/jason/architecture/AgArch.java 2016-04-12 09:01:45 UTC (rev 1899) +++ trunk/src/jason/architecture/AgArch.java 2016-04-12 12:30:50 UTC (rev 1900) @@ -198,7 +198,7 @@ /** called to inform that the action execution is finished */ public void actionExecuted(ActionExec act) { getTS().getC().addFeedbackAction(act); - wakeUpAct(false); + wakeUpAct(); } /** Returns true if the agent can enter in sleep mode. */ @@ -217,19 +217,19 @@ successor.wake(); } - public void wakeUpSense(boolean ts) { + public void wakeUpSense() { if (successor != null) - wakeUpSense(ts); + wakeUpSense(); } - public void wakeUpDeliberate(boolean ts) { + public void wakeUpDeliberate() { if (successor != null) - wakeUpDeliberate(ts); + wakeUpDeliberate(); } - public void wakeUpAct(boolean ts) { + public void wakeUpAct() { if (successor != null) - wakeUpAct(ts); + wakeUpAct(); } Modified: trunk/src/jason/asSemantics/ConcurrentInternalAction.java =================================================================== --- trunk/src/jason/asSemantics/ConcurrentInternalAction.java 2016-04-12 09:01:45 UTC (rev 1899) +++ trunk/src/jason/asSemantics/ConcurrentInternalAction.java 2016-04-12 12:30:50 UTC (rev 1900) @@ -147,7 +147,7 @@ } } }); - ts.getUserAgArch().wakeUpDeliberate(false); + ts.getUserAgArch().wakeUpDeliberate(); } public void destroy() throws Exception { Modified: trunk/src/jason/asSemantics/GoalListenerForMetaEvents.java =================================================================== --- trunk/src/jason/asSemantics/GoalListenerForMetaEvents.java 2016-04-12 09:01:45 UTC (rev 1899) +++ trunk/src/jason/asSemantics/GoalListenerForMetaEvents.java 2016-04-12 12:30:50 UTC (rev 1900) @@ -50,6 +50,6 @@ } }); - ts.getUserAgArch().wakeUpDeliberate(false); + ts.getUserAgArch().wakeUpDeliberate(); } } Modified: trunk/src/jason/asSemantics/TransitionSystem.java =================================================================== --- trunk/src/jason/asSemantics/TransitionSystem.java 2016-04-12 09:01:45 UTC (rev 1899) +++ trunk/src/jason/asSemantics/TransitionSystem.java 2016-04-12 12:30:50 UTC (rev 1900) @@ -1317,7 +1317,7 @@ } } }); - getUserAgArch().wakeUpSense(false); + getUserAgArch().wakeUpSense(); } }, deadline, TimeUnit.MILLISECONDS); } Modified: trunk/src/jason/infra/centralised/CentralisedAgArch.java =================================================================== --- trunk/src/jason/infra/centralised/CentralisedAgArch.java 2016-04-12 09:01:45 UTC (rev 1899) +++ trunk/src/jason/infra/centralised/CentralisedAgArch.java 2016-04-12 12:30:50 UTC (rev 1900) @@ -300,17 +300,17 @@ } @Override - public void wakeUpSense(boolean ts) { + public void wakeUpSense() { wake(); } @Override - public void wakeUpDeliberate(boolean ts) { + public void wakeUpDeliberate() { wake(); } @Override - public void wakeUpAct(boolean ts) { + public void wakeUpAct() { wake(); } @@ -346,7 +346,7 @@ public void receiveMsg(Message m) { mbox.offer(m); - wakeUpSense(false); + wakeUpSense(); } public void broadcast(jason.asSemantics.Message m) throws Exception { Modified: trunk/src/jason/infra/centralised/CentralisedAgArchAsynchronous.java =================================================================== --- trunk/src/jason/infra/centralised/CentralisedAgArchAsynchronous.java 2016-04-12 09:01:45 UTC (rev 1899) +++ trunk/src/jason/infra/centralised/CentralisedAgArchAsynchronous.java 2016-04-12 12:30:50 UTC (rev 1900) @@ -18,10 +18,6 @@ private ExecutorService executorDeliberate; private ExecutorService executorAct; - private boolean sleepingSense = false; - private boolean sleepingDeliberate = false; - private boolean sleepingAct = false; - public Object objSense = new Object(); public Object objDeliberate = new Object(); public Object objAct = new Object(); @@ -34,70 +30,18 @@ actComponent = new ActComponent(this); } - - public void wakeUpSense(boolean ts) { - synchronized (objSense) { - if (ts || sleepingSense) { - sleepingSense = false; - senseComponent.enqueueExecutor(ts); - } - } + public void wakeUpSense() { + senseComponent.wakeUp(); } - public void wakeUpDeliberate(boolean ts) { - synchronized (objDeliberate) { - if (ts || sleepingDeliberate) { - sleepingDeliberate = false; - deliberateComponent.enqueueExecutor(ts); - } - } + public void wakeUpDeliberate() { + deliberateComponent.wakeUp(); } - public void wakeUpAct(boolean ts) { - synchronized (objAct) { - if (ts || sleepingAct) { - sleepingAct = false; - actComponent.enqueueExecutor(ts); - } - } + public void wakeUpAct() { + actComponent.wakeUp(); } - - public void sleepSense() { - sleepingSense = true; - } - public boolean isSleepingSense() { - return sleepingSense; - } - - public void sleepDeliberate() { - sleepingDeliberate = true; - } - - public boolean isSleepingDeliberate() { - return sleepingDeliberate; - } - - public void sleepAct() { - sleepingAct = true; - } - - public boolean isSleepingAct() { - return sleepingAct; - } - - public boolean canSleepSense() { - return getTS().canSleepSense(); - } - - public boolean canSleepDeliberate() { - return getTS().canSleepDeliberate(); - } - - public boolean canSleepAct() { - return getTS().canSleepAct(); - } - public SenseComponent getSenseComponent() { return senseComponent; } Modified: trunk/src/jason/infra/centralised/CentralisedEnvironment.java =================================================================== --- trunk/src/jason/infra/centralised/CentralisedEnvironment.java 2016-04-12 09:01:45 UTC (rev 1899) +++ trunk/src/jason/infra/centralised/CentralisedEnvironment.java 2016-04-12 12:30:50 UTC (rev 1900) @@ -99,16 +99,16 @@ public void informAgsEnvironmentChanged(String... agents) { if (agents.length == 0) { for (CentralisedAgArch ag: masRunner.getAgs().values()) { - ag.getTS().getUserAgArch().wakeUpSense(false); + ag.getTS().getUserAgArch().wakeUpSense(); } } else { for (String agName: agents) { CentralisedAgArch ag = masRunner.getAg(agName); if (ag != null) { if (ag instanceof CentralisedAgArchAsynchronous) { - ((CentralisedAgArchAsynchronous) ag.getTS().getUserAgArch()).wakeUpSense(false); + ((CentralisedAgArchAsynchronous) ag.getTS().getUserAgArch()).wakeUpSense(); } else { - ag.wakeUpSense(false); + ag.wakeUpSense(); } } else { logger.log(Level.SEVERE, "Error sending message notification: agent " + agName + " does not exist!"); @@ -125,7 +125,7 @@ for (String agName: agentsToNotify) { CentralisedAgArch ag = masRunner.getAg(agName); if (ag != null) { - ag.getTS().getUserAgArch().wakeUpSense(false); + ag.getTS().getUserAgArch().wakeUpSense(); } else { logger.log(Level.SEVERE, "Error sending message notification: agent " + agName + " does not exist!"); } Modified: trunk/src/jason/infra/components/ActComponent.java =================================================================== --- trunk/src/jason/infra/components/ActComponent.java 2016-04-12 09:01:45 UTC (rev 1899) +++ trunk/src/jason/infra/components/ActComponent.java 2016-04-12 12:30:50 UTC (rev 1900) @@ -3,12 +3,20 @@ import jason.infra.centralised.CentralisedAgArchAsynchronous; public class ActComponent extends AgentComponent { - private boolean inQueue = true; public ActComponent(CentralisedAgArchAsynchronous centralisedAgArchAsynchronous) { super(centralisedAgArchAsynchronous); } + public void wakeUp() { + synchronized (ag.objAct) { + if (sleeping) { + sleeping = false; + enqueueExecutor(false); + } + } + } + public void enqueueExecutor(boolean ts) { if (!inQueue || ts) { inQueue = true; @@ -16,6 +24,10 @@ } } + public boolean canSleep() { + return ag.getTS().canSleepAct(); + } + public void run() { int cycles = ag.getCyclesAct(); //int number_cycles = 1; @@ -26,12 +38,12 @@ synchronized (ag.objAct) { - if (ag.canSleepAct()) { + if (canSleep()) { inQueue = false; - ag.sleepAct(); + sleep(); return; } else if (i == cycles) { - ag.wakeUpAct(true); + enqueueExecutor(true); return; } } Modified: trunk/src/jason/infra/components/AgentComponent.java =================================================================== --- trunk/src/jason/infra/components/AgentComponent.java 2016-04-12 09:01:45 UTC (rev 1899) +++ trunk/src/jason/infra/components/AgentComponent.java 2016-04-12 12:30:50 UTC (rev 1900) @@ -4,10 +4,22 @@ public abstract class AgentComponent implements Runnable { protected CentralisedAgArchAsynchronous ag; + protected boolean inQueue = true; + protected boolean sleeping = false; public AgentComponent(CentralisedAgArchAsynchronous ag) { this.ag = ag; } + public void sleep() { + sleeping = true; + } + + public boolean isSleeping() { + return sleeping; + } + + public abstract void wakeUp(); public abstract void enqueueExecutor(boolean ts); + public abstract boolean canSleep(); } Modified: trunk/src/jason/infra/components/CircumstanceListenerComponents.java =================================================================== --- trunk/src/jason/infra/components/CircumstanceListenerComponents.java 2016-04-12 09:01:45 UTC (rev 1899) +++ trunk/src/jason/infra/components/CircumstanceListenerComponents.java 2016-04-12 12:30:50 UTC (rev 1900) @@ -13,11 +13,11 @@ } public void notifyDeliberate() { - ag.wakeUpDeliberate(false); + ag.wakeUpDeliberate(); } public void notifyAct() { - ag.wakeUpAct(false); + ag.wakeUpAct(); } public void eventAdded(Event e) { Modified: trunk/src/jason/infra/components/DeliberateComponent.java =================================================================== --- trunk/src/jason/infra/components/DeliberateComponent.java 2016-04-12 09:01:45 UTC (rev 1899) +++ trunk/src/jason/infra/components/DeliberateComponent.java 2016-04-12 12:30:50 UTC (rev 1900) @@ -3,13 +3,24 @@ import jason.infra.centralised.CentralisedAgArchAsynchronous; public class DeliberateComponent extends AgentComponent { - private boolean inQueue = true; - + public DeliberateComponent(CentralisedAgArchAsynchronous centralisedAgArchAsynchronous) { super(centralisedAgArchAsynchronous); } + public boolean canSleep() { + return ag.getTS().canSleepDeliberate(); + } + public void wakeUp() { + synchronized (ag.objDeliberate) { + if (sleeping) { + sleeping = false; + enqueueExecutor(false); + } + } + } + public void enqueueExecutor(boolean ts) { if (!inQueue || ts) { inQueue = true; @@ -31,12 +42,12 @@ synchronized (ag.objDeliberate) { - if (ag.canSleepDeliberate()) { + if (canSleep()) { inQueue = false; - ag.sleepDeliberate(); + sleep(); return; } else if (i == cycles) { - ag.wakeUpDeliberate(true); + enqueueExecutor(true); return; } } Modified: trunk/src/jason/infra/components/SenseComponent.java =================================================================== --- trunk/src/jason/infra/components/SenseComponent.java 2016-04-12 09:01:45 UTC (rev 1899) +++ trunk/src/jason/infra/components/SenseComponent.java 2016-04-12 12:30:50 UTC (rev 1900) @@ -3,12 +3,34 @@ import jason.infra.centralised.CentralisedAgArchAsynchronous; public class SenseComponent extends AgentComponent { - private boolean inQueue = true; public SenseComponent(CentralisedAgArchAsynchronous centralisedAgArchAsynchronous) { super(centralisedAgArchAsynchronous); } + public boolean canSleep() { + return ag.getTS().canSleepSense(); + } + + public void wakeUp() { + synchronized (ag.objSense) { + if (sleeping) { + sleeping = false; + enqueueExecutor(false); + } + } + } + + /* + public void wakeUp(boolean ts) { + synchronized (ag.objSense) { + if (ts || sleeping) { + sleeping = false; + enqueueExecutor(ts); + } + } + }*/ + public void enqueueExecutor(boolean ts) { if (!inQueue || ts) { inQueue = true; @@ -26,12 +48,12 @@ ag.getTS().sense(); synchronized (ag.objSense) { - if (ag.canSleepSense()) { + if (canSleep()) { inQueue = false; - ag.sleepSense(); + sleep(); return; } else if (i == cycles) { - ag.wakeUpSense(true); + enqueueExecutor(true); return; } } Modified: trunk/src/jason/stdlib/send.java =================================================================== --- trunk/src/jason/stdlib/send.java 2016-04-12 09:01:45 UTC (rev 1899) +++ trunk/src/jason/stdlib/send.java 2016-04-12 12:30:50 UTC (rev 1900) @@ -204,7 +204,7 @@ intention.peek().getUnif().unifies(send.getTerm(3), timeoutAns); // add the intention back in C.I ts.getC().resumeIntention(intention); - ts.getUserAgArch().wakeUpAct(false); + ts.getUserAgArch().wakeUpAct(); } } }, (long)((NumberTerm)tto).solve(), TimeUnit.MILLISECONDS); Modified: trunk/src/jason/stdlib/wait.java =================================================================== --- trunk/src/jason/stdlib/wait.java 2016-04-12 09:01:45 UTC (rev 1899) +++ trunk/src/jason/stdlib/wait.java 2016-04-12 12:30:50 UTC (rev 1900) @@ -208,7 +208,7 @@ } } }); - ts.getUserAgArch().wakeUpDeliberate(false); + ts.getUserAgArch().wakeUpDeliberate(); } public void eventAdded(Event e) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |