|
From: <jom...@us...> - 2016-04-06 16:24:19
|
Revision: 1884
http://sourceforge.net/p/jason/svn/1884
Author: jomifred
Date: 2016-04-06 16:24:17 +0000 (Wed, 06 Apr 2016)
Log Message:
-----------
bb support for concurrent access
Modified Paths:
--------------
trunk/src/jason/bb/BeliefBase.java
trunk/src/jason/bb/ChainBB.java
trunk/src/jason/bb/DefaultBeliefBase.java
trunk/src/jason/bb/IndexedBB.java
trunk/src/jason/bb/JDBCPersistentBB.java
trunk/src/jason/bb/TextPersistentBB.java
Modified: trunk/src/jason/bb/BeliefBase.java
===================================================================
--- trunk/src/jason/bb/BeliefBase.java 2016-04-06 16:21:17 UTC (rev 1883)
+++ trunk/src/jason/bb/BeliefBase.java 2016-04-06 16:24:17 UTC (rev 1884)
@@ -134,4 +134,7 @@
public Element getAsDOM(Document document);
public BeliefBase clone();
+
+ /** Gets a lock for the BB */
+ public Object getLock();
}
Modified: trunk/src/jason/bb/ChainBB.java
===================================================================
--- trunk/src/jason/bb/ChainBB.java 2016-04-06 16:21:17 UTC (rev 1883)
+++ trunk/src/jason/bb/ChainBB.java 2016-04-06 16:24:17 UTC (rev 1884)
@@ -90,4 +90,10 @@
}
return r;
}
+
+ public final Object lockBB = new Object();
+
+ public Object getLock() {
+ return lockBB;
+ }
}
Modified: trunk/src/jason/bb/DefaultBeliefBase.java
===================================================================
--- trunk/src/jason/bb/DefaultBeliefBase.java 2016-04-06 16:21:17 UTC (rev 1883)
+++ trunk/src/jason/bb/DefaultBeliefBase.java 2016-04-06 16:24:17 UTC (rev 1884)
@@ -72,6 +72,12 @@
}
}
+ public final Object lockBB = new Object();
+
+ public Object getLock() {
+ return lockBB;
+ }
+
public Set<Atom> getNameSpaces() {
return nameSpaces.keySet();
}
@@ -260,7 +266,7 @@
/** @deprecated use iterator() instead of getAll */
public Iterator<Literal> getAll() {
return iterator();
- }
+ }
public boolean abolish(PredicateIndicator pi) {
BelEntry entry = belsMapDefaultNS.remove(pi); // TODO: consider other NS (?) this method is not used by jason
@@ -352,22 +358,24 @@
Element ebels = null;
while (tries < 10) { // max 10 tries
try {
- ebels = (Element) document.createElement("beliefs");
- Element enss = (Element) document.createElement("namespaces");
- Element ens = (Element) document.createElement("namespace");
- ens.setAttribute("id", "default"); // to ensure default is the first
- enss.appendChild(ens);
- for (Atom ns: getNameSpaces()) {
- if (ns == Literal.DefaultNS)
- continue;
- ens = (Element) document.createElement("namespace");
- ens.setAttribute("id", ns.getFunctor());
+ synchronized (getLock()) {
+ ebels = (Element) document.createElement("beliefs");
+ Element enss = (Element) document.createElement("namespaces");
+ Element ens = (Element) document.createElement("namespace");
+ ens.setAttribute("id", "default"); // to ensure default is the first
enss.appendChild(ens);
+ for (Atom ns: getNameSpaces()) {
+ if (ns == Literal.DefaultNS)
+ continue;
+ ens = (Element) document.createElement("namespace");
+ ens.setAttribute("id", ns.getFunctor());
+ enss.appendChild(ens);
+ }
+ ebels.appendChild(enss);
+ for (Literal l: this)
+ ebels.appendChild(l.getAsDOM(document));
+ break; // quit the loop
}
- ebels.appendChild(enss);
- for (Literal l: this)
- ebels.appendChild(l.getAsDOM(document));
- break; // quit the loop
} catch (Exception e) { // normally concurrent modification, but others happen
tries++;
e.printStackTrace();
Modified: trunk/src/jason/bb/IndexedBB.java
===================================================================
--- trunk/src/jason/bb/IndexedBB.java 2016-04-06 16:21:17 UTC (rev 1883)
+++ trunk/src/jason/bb/IndexedBB.java 2016-04-06 16:24:17 UTC (rev 1884)
@@ -97,4 +97,11 @@
nbb.indexedBels = new HashMap<String,Structure>(this.indexedBels);
return nbb;
}
+
+ public final Object lockBB = new Object();
+
+ public Object getLock() {
+ return lockBB;
+ }
+
}
Modified: trunk/src/jason/bb/JDBCPersistentBB.java
===================================================================
--- trunk/src/jason/bb/JDBCPersistentBB.java 2016-04-06 16:21:17 UTC (rev 1883)
+++ trunk/src/jason/bb/JDBCPersistentBB.java 2016-04-06 16:24:17 UTC (rev 1884)
@@ -714,4 +714,9 @@
return null;
}
+ public final Object lockBB = new Object();
+
+ public Object getLock() {
+ return lockBB;
+ }
}
Modified: trunk/src/jason/bb/TextPersistentBB.java
===================================================================
--- trunk/src/jason/bb/TextPersistentBB.java 2016-04-06 16:21:17 UTC (rev 1883)
+++ trunk/src/jason/bb/TextPersistentBB.java 2016-04-06 16:24:17 UTC (rev 1884)
@@ -56,4 +56,11 @@
}
nextBB.stop();
}
+
+ public final Object lockBB = new Object();
+
+ public Object getLock() {
+ return lockBB;
+ }
+
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|