Skip to content

Commit

Permalink
Add no-op agent to support deref-as-map
Browse files Browse the repository at this point in the history
Signed-off-by: James Hamlin <[email protected]>
  • Loading branch information
jfhamlin committed Aug 16, 2023
1 parent 0fd895d commit 857dc92
Show file tree
Hide file tree
Showing 9 changed files with 22 additions and 13 deletions.
1 change: 1 addition & 0 deletions pkg/gen/gljimports/gljimports_darwin_amd64.go
Original file line number Diff line number Diff line change
Expand Up @@ -3154,6 +3154,7 @@ func RegisterImports(_register func(string, interface{})) {
// package github.com/glojurelang/glojure/pkg/lang
////////////////////////////////////////
_register("github.com/glojurelang/glojure/pkg/lang.AddP", github.com_glojurelang_glojure_pkg_lang.AddP)
_register("github.com/glojurelang/glojure/pkg/lang.Agent", reflect.TypeOf((*github.com_glojurelang_glojure_pkg_lang.Agent)(nil)).Elem())
_register("github.com/glojurelang/glojure/pkg/lang.AgentSubmit", github.com_glojurelang_glojure_pkg_lang.AgentSubmit)
_register("github.com/glojurelang/glojure/pkg/lang.AppendWriter", github.com_glojurelang_glojure_pkg_lang.AppendWriter)
_register("github.com/glojurelang/glojure/pkg/lang.Apply", github.com_glojurelang_glojure_pkg_lang.Apply)
Expand Down
1 change: 1 addition & 0 deletions pkg/gen/gljimports/gljimports_darwin_arm64.go
Original file line number Diff line number Diff line change
Expand Up @@ -3154,6 +3154,7 @@ func RegisterImports(_register func(string, interface{})) {
// package github.com/glojurelang/glojure/pkg/lang
////////////////////////////////////////
_register("github.com/glojurelang/glojure/pkg/lang.AddP", github.com_glojurelang_glojure_pkg_lang.AddP)
_register("github.com/glojurelang/glojure/pkg/lang.Agent", reflect.TypeOf((*github.com_glojurelang_glojure_pkg_lang.Agent)(nil)).Elem())
_register("github.com/glojurelang/glojure/pkg/lang.AgentSubmit", github.com_glojurelang_glojure_pkg_lang.AgentSubmit)
_register("github.com/glojurelang/glojure/pkg/lang.AppendWriter", github.com_glojurelang_glojure_pkg_lang.AppendWriter)
_register("github.com/glojurelang/glojure/pkg/lang.Apply", github.com_glojurelang_glojure_pkg_lang.Apply)
Expand Down
1 change: 1 addition & 0 deletions pkg/gen/gljimports/gljimports_linux_amd64.go
Original file line number Diff line number Diff line change
Expand Up @@ -3154,6 +3154,7 @@ func RegisterImports(_register func(string, interface{})) {
// package github.com/glojurelang/glojure/pkg/lang
////////////////////////////////////////
_register("github.com/glojurelang/glojure/pkg/lang.AddP", github.com_glojurelang_glojure_pkg_lang.AddP)
_register("github.com/glojurelang/glojure/pkg/lang.Agent", reflect.TypeOf((*github.com_glojurelang_glojure_pkg_lang.Agent)(nil)).Elem())
_register("github.com/glojurelang/glojure/pkg/lang.AgentSubmit", github.com_glojurelang_glojure_pkg_lang.AgentSubmit)
_register("github.com/glojurelang/glojure/pkg/lang.AppendWriter", github.com_glojurelang_glojure_pkg_lang.AppendWriter)
_register("github.com/glojurelang/glojure/pkg/lang.Apply", github.com_glojurelang_glojure_pkg_lang.Apply)
Expand Down
1 change: 1 addition & 0 deletions pkg/gen/gljimports/gljimports_linux_arm64.go
Original file line number Diff line number Diff line change
Expand Up @@ -3154,6 +3154,7 @@ func RegisterImports(_register func(string, interface{})) {
// package github.com/glojurelang/glojure/pkg/lang
////////////////////////////////////////
_register("github.com/glojurelang/glojure/pkg/lang.AddP", github.com_glojurelang_glojure_pkg_lang.AddP)
_register("github.com/glojurelang/glojure/pkg/lang.Agent", reflect.TypeOf((*github.com_glojurelang_glojure_pkg_lang.Agent)(nil)).Elem())
_register("github.com/glojurelang/glojure/pkg/lang.AgentSubmit", github.com_glojurelang_glojure_pkg_lang.AgentSubmit)
_register("github.com/glojurelang/glojure/pkg/lang.AppendWriter", github.com_glojurelang_glojure_pkg_lang.AppendWriter)
_register("github.com/glojurelang/glojure/pkg/lang.Apply", github.com_glojurelang_glojure_pkg_lang.Apply)
Expand Down
1 change: 1 addition & 0 deletions pkg/gen/gljimports/gljimports_windows.go
Original file line number Diff line number Diff line change
Expand Up @@ -3154,6 +3154,7 @@ func RegisterImports(_register func(string, interface{})) {
// package github.com/glojurelang/glojure/pkg/lang
////////////////////////////////////////
_register("github.com/glojurelang/glojure/pkg/lang.AddP", github.com_glojurelang_glojure_pkg_lang.AddP)
_register("github.com/glojurelang/glojure/pkg/lang.Agent", reflect.TypeOf((*github.com_glojurelang_glojure_pkg_lang.Agent)(nil)).Elem())
_register("github.com/glojurelang/glojure/pkg/lang.AgentSubmit", github.com_glojurelang_glojure_pkg_lang.AgentSubmit)
_register("github.com/glojurelang/glojure/pkg/lang.AppendWriter", github.com_glojurelang_glojure_pkg_lang.AppendWriter)
_register("github.com/glojurelang/glojure/pkg/lang.Apply", github.com_glojurelang_glojure_pkg_lang.Apply)
Expand Down
2 changes: 2 additions & 0 deletions pkg/lang/agent.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ package lang
import "time"

type (
Agent struct{}

future struct {
done chan struct{}
res interface{}
Expand Down
24 changes: 12 additions & 12 deletions pkg/stdlib/glojure/core.glj
Original file line number Diff line number Diff line change
Expand Up @@ -2075,7 +2075,7 @@
:static true
}
([state & options]
(let [a (new glojure.lang.Agent state)
(let [a (new github.com$glojurelang$glojure$pkg$lang.Agent state)
opts (apply hash-map options)]
(setup-reference a options)
(when (:error-handler opts)
Expand Down Expand Up @@ -2103,7 +2103,7 @@

(apply action-fn state-of-agent args)"
{:added "1.5"}
[executor ^glojure.lang.Agent a f & args]
[executor ^github.com$glojurelang$glojure$pkg$lang.Agent a f & args]
(.dispatch a (binding [*agent* a] (binding-conveyor-fn f)) args executor))

(defn send
Expand All @@ -2114,7 +2114,7 @@
(apply action-fn state-of-agent args)"
{:added "1.0"
:static true}
[^glojure.lang.Agent a f & args]
[^github.com$glojurelang$glojure$pkg$lang.Agent a f & args]
(apply send-via glojure.lang.Agent/pooledExecutor a f args))

(defn send-off
Expand All @@ -2125,7 +2125,7 @@
(apply action-fn state-of-agent args)"
{:added "1.0"
:static true}
[^glojure.lang.Agent a f & args]
[^github.com$glojurelang$glojure$pkg$lang.Agent a f & args]
(apply send-via glojure.lang.Agent/soloExecutor a f args))

(defn release-pending-sends
Expand Down Expand Up @@ -2170,7 +2170,7 @@
failed."
{:added "1.2"
:static true}
[^glojure.lang.Agent a] (.getError a))
[^github.com$glojurelang$glojure$pkg$lang.Agent a] (.getError a))

(defn restart-agent
"When an agent is failed, changes the agent state to new-state and
Expand All @@ -2185,7 +2185,7 @@
{:added "1.2"
:static true
}
[^glojure.lang.Agent a, new-state & options]
[^github.com$glojurelang$glojure$pkg$lang.Agent a, new-state & options]
(let [opts (apply hash-map options)]
(.restart a new-state (if (:clear-actions opts) true false))))

Expand All @@ -2196,15 +2196,15 @@
agent and the exception."
{:added "1.2"
:static true}
[^glojure.lang.Agent a, handler-fn]
[^github.com$glojurelang$glojure$pkg$lang.Agent a, handler-fn]
(.setErrorHandler a handler-fn))

(defn error-handler
"Returns the error-handler of agent a, or nil if there is none.
See set-error-handler!"
{:added "1.2"
:static true}
[^glojure.lang.Agent a]
[^github.com$glojurelang$glojure$pkg$lang.Agent a]
(.getErrorHandler a))

(defn set-error-mode!
Expand All @@ -2221,14 +2221,14 @@
still work, returning the state of the agent before the error."
{:added "1.2"
:static true}
[^glojure.lang.Agent a, mode-keyword]
[^github.com$glojurelang$glojure$pkg$lang.Agent a, mode-keyword]
(.setErrorMode a mode-keyword))

(defn error-mode
"Returns the error-mode of agent a. See set-error-mode!"
{:added "1.2"
:static true}
[^glojure.lang.Agent a]
[^github.com$glojurelang$glojure$pkg$lang.Agent a]
(.getErrorMode a))

(defn agent-errors
Expand All @@ -2247,7 +2247,7 @@
agent, allowing subsequent actions to occur."
{:added "1.0"
:deprecated "1.2"}
[^glojure.lang.Agent a] (restart-agent a (.Deref a)))
[^github.com$glojurelang$glojure$pkg$lang.Agent a] (restart-agent a (.Deref a)))

(defn shutdown-agents
"Initiates a shutdown of the thread pools that back the agent
Expand Down Expand Up @@ -3270,7 +3270,7 @@
(send agent count-down))
(. latch (await)))))

(defn ^:static await1 [^glojure.lang.Agent a]
(defn ^:static await1 [^github.com$glojurelang$glojure$pkg$lang.Agent a]
(when (pos? (.getQueueCount a))
(await a))
a)
Expand Down
2 changes: 1 addition & 1 deletion pkg/stdlib/glojure/core_print.glj
Original file line number Diff line number Diff line change
Expand Up @@ -416,7 +416,7 @@
{:status
(cond
(or ex
(and (instance? glojure.lang.Agent o)
(and (instance? github.com$glojurelang$glojure$pkg$lang.Agent o)
(agent-error o)))
:failed

Expand Down
2 changes: 2 additions & 0 deletions scripts/rewrite-core/rewrite.clj
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,9 @@
(sexpr-replace '(^github.com$glojurelang$glojure$pkg$lang.IPersistentVector [^github.com$glojurelang$glojure$pkg$lang.IAtom2 atom f] (.swapVals atom f))
'([atom f & args] (.swapVals atom f args)))

;; Agents
(sexpr-replace '(. clojure.lang.Agent shutdown) '(github.com$glojurelang$glojure$pkg$lang.ShutdownAgents))
(sexpr-replace 'clojure.lang.Agent 'github.com$glojurelang$glojure$pkg$lang.Agent)

(sexpr-replace 'clojure.lang.Util/hash 'github.com$glojurelang$glojure$pkg$lang.Hash)

Expand Down

0 comments on commit 857dc92

Please sign in to comment.