From: <jom...@us...> - 2012-07-31 19:07:18
|
Revision: 1704 http://jason.svn.sourceforge.net/jason/?rev=1704&view=rev Author: jomifred Date: 2012-07-31 19:07:11 +0000 (Tue, 31 Jul 2012) Log Message: ----------- refactor some methods in Circumstance Modified Paths: -------------- trunk/src/jason/asSemantics/Circumstance.java trunk/src/jason/asSemantics/TransitionSystem.java trunk/src/jason/control/ExecutionControlGUI.java trunk/src/jason/infra/centralised/CentralisedAgArch.java trunk/src/jason/infra/centralised/RunCentralisedMAS.java Modified: trunk/src/jason/asSemantics/Circumstance.java =================================================================== --- trunk/src/jason/asSemantics/Circumstance.java 2012-07-15 03:02:41 UTC (rev 1703) +++ trunk/src/jason/asSemantics/Circumstance.java 2012-07-31 19:07:11 UTC (rev 1704) @@ -33,7 +33,6 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; -import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Queue; @@ -51,7 +50,7 @@ private Queue<Event> E; private Queue<Intention> I; protected ActionExec A; - protected Queue<Message> MB; + private Queue<Message> MB; protected List<Option> RP; protected List<Option> AP; protected Event SE; @@ -78,7 +77,7 @@ // use LinkedList since we use a lot of remove(0) in selectEvent E = new ConcurrentLinkedQueue<Event>(); I = new ConcurrentLinkedQueue<Intention>(); - MB = new LinkedList<Message>(); + MB = new ConcurrentLinkedQueue<Message>(); PA = new ConcurrentHashMap<Integer, ActionExec>(); PI = new ConcurrentHashMap<String, Intention>(); PE = new ConcurrentHashMap<String, Event>(); @@ -201,6 +200,14 @@ public Queue<Message> getMailBox() { return MB; } + + public void addMsg(Message m) { + MB.offer(m); + } + + public boolean hasMsg() { + return !MB.isEmpty(); + } /** Intentions */ @@ -553,9 +560,9 @@ Element e; // MB - if (getMailBox() != null && !getMailBox().isEmpty()) { + if (MB != null && hasMsg()) { Element ms = (Element) document.createElement("mailbox"); - for (Message m: getMailBox()) { + for (Message m: MB) { e = (Element) document.createElement("message"); e.appendChild(document.createTextNode(m.toString())); ms.appendChild(e); Modified: trunk/src/jason/asSemantics/TransitionSystem.java =================================================================== --- trunk/src/jason/asSemantics/TransitionSystem.java 2012-07-15 03:02:41 UTC (rev 1703) +++ trunk/src/jason/asSemantics/TransitionSystem.java 2012-07-31 19:07:11 UTC (rev 1704) @@ -219,8 +219,8 @@ private void applyProcMsg() throws JasonException { confP.step = State.SelEv; - if (!conf.C.MB.isEmpty()) { - Message m = conf.ag.selectMessage(conf.C.MB); + if (conf.C.hasMsg()) { + Message m = conf.ag.selectMessage(conf.C.getMailBox()); if (m == null) return; // get the content, it can be any term (literal, list, number, ...; see ask) @@ -296,6 +296,9 @@ String sender = m.getSender(); if (sender.equals(getUserAgArch().getAgName())) sender = "self"; + if (m.getIlForce().equals("achieve") && content.isLiteral()) { + updateEvents(new Event(new Trigger(TEOperator.add, TEType.achieve, (Literal)content), Intention.EmptyInt)); + } else { Literal received = new LiteralImpl("kqml_received").addTerms( new Atom(sender), new Atom(m.getIlForce()), @@ -303,6 +306,7 @@ new Atom(m.getMsgId())); updateEvents(new Event(new Trigger(TEOperator.add, TEType.achieve, received), Intention.EmptyInt)); + } } else { logger.fine("Ignoring message "+m+" because it is received after the timeout."); } @@ -1080,10 +1084,10 @@ } public boolean canSleep() { - return (C.isAtomicIntentionSuspended() && conf.C.MB.isEmpty()) + return (C.isAtomicIntentionSuspended() && !conf.C.hasMsg()) || (!conf.C.hasEvent() && !conf.C.hasIntention() && !conf.C.hasFeedbackAction() && - conf.C.MB.isEmpty() && + !conf.C.hasMsg() && //taskForBeginOfCycle.isEmpty() && getUserAgArch().canSleep()); } Modified: trunk/src/jason/control/ExecutionControlGUI.java =================================================================== --- trunk/src/jason/control/ExecutionControlGUI.java 2012-07-15 03:02:41 UTC (rev 1703) +++ trunk/src/jason/control/ExecutionControlGUI.java 2012-07-31 19:07:11 UTC (rev 1704) @@ -42,6 +42,8 @@ import java.util.HashMap; import java.util.Hashtable; import java.util.Map; +import java.util.Set; +import java.util.TreeSet; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.logging.Level; @@ -291,7 +293,8 @@ void setListOfAgsFromInfra() { try { - for (String ag: getExecutionControlInfraTier().getRuntimeServices().getAgentsNames()) { + Set<String> ags = new TreeSet<String>(getExecutionControlInfraTier().getRuntimeServices().getAgentsNames()); + for (String ag: ags) { //getExecutionControlInfraTier().getRuntimeServices().getAgentsNames()) { listModel.addElement(ag); } } catch (Exception e) { Modified: trunk/src/jason/infra/centralised/CentralisedAgArch.java =================================================================== --- trunk/src/jason/infra/centralised/CentralisedAgArch.java 2012-07-15 03:02:41 UTC (rev 1703) +++ trunk/src/jason/infra/centralised/CentralisedAgArch.java 2012-07-31 19:07:11 UTC (rev 1704) @@ -29,6 +29,7 @@ import jason.architecture.MindInspectorAgArch; import jason.asSemantics.ActionExec; import jason.asSemantics.Agent; +import jason.asSemantics.Circumstance; import jason.asSemantics.Message; import jason.asSemantics.TransitionSystem; import jason.asSyntax.Literal; @@ -245,7 +246,7 @@ if (m.getSender() == null) m.setSender(getAgName()); CentralisedAgArch rec = masRunner.getAg(m.getReceiver()); - + if (rec == null) { if (isRunning()) throw new ReceiverNotFoundException("Receiver '" + m.getReceiver() + "' does not exists! Could not send " + m); @@ -276,11 +277,12 @@ // Default procedure for checking messages, move message from local mbox to C.mbox public void checkMail() { - Queue<Message> tsmb = getTS().getC().getMailBox(); - while (!mbox.isEmpty()) { - Message im = mbox.poll(); - tsmb.offer(im); + Circumstance C = getTS().getC(); + Message im = mbox.poll(); + while (im != null) { + C.addMsg(im); if (logger.isLoggable(Level.FINE)) logger.fine("received message: " + im); + im = mbox.poll(); } } Modified: trunk/src/jason/infra/centralised/RunCentralisedMAS.java =================================================================== --- trunk/src/jason/infra/centralised/RunCentralisedMAS.java 2012-07-15 03:02:41 UTC (rev 1703) +++ trunk/src/jason/infra/centralised/RunCentralisedMAS.java 2012-07-31 19:07:11 UTC (rev 1704) @@ -526,7 +526,6 @@ } @Override - //synchronized public void run() { if (isRunning()) { if (getTS().reasoningCycle()) { // the agent run a cycle (did not enter in sleep) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |