summaryrefslogtreecommitdiff
path: root/src/jvm/clojure/lang/Agent.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/jvm/clojure/lang/Agent.java')
-rw-r--r--src/jvm/clojure/lang/Agent.java10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/jvm/clojure/lang/Agent.java b/src/jvm/clojure/lang/Agent.java
index 5a07555c..c4f48535 100644
--- a/src/jvm/clojure/lang/Agent.java
+++ b/src/jvm/clojure/lang/Agent.java
@@ -132,6 +132,12 @@ public Object dispatch(IFn fn, ISeq args, boolean solo) throws Exception{
throw new Exception("Agent has errors", (Exception) RT.first(errors));
}
Action action = new Action(this, fn, args, solo);
+ dispatchAction(action);
+
+ return this;
+}
+
+static void dispatchAction(Action action){
LockingTransaction trans = LockingTransaction.getRunning();
if(trans != null)
trans.enqueue(action);
@@ -140,9 +146,7 @@ public Object dispatch(IFn fn, ISeq args, boolean solo) throws Exception{
nested.set(nested.get().cons(action));
}
else
- enqueue(action);
-
- return this;
+ action.agent.enqueue(action);
}
void enqueue(Action action){