invoke sync
This commit is contained in:
parent
3b90c4ba59
commit
5a2f68c1ea
8 changed files with 31 additions and 12 deletions
4
deps.edn
4
deps.edn
|
|
@ -11,6 +11,10 @@
|
||||||
:sha "cb96e80f6f3d3b307c59cbeb49bb0dcb3a2a780b"}}
|
:sha "cb96e80f6f3d3b307c59cbeb49bb0dcb3a2a780b"}}
|
||||||
:extra-paths ["test"]
|
:extra-paths ["test"]
|
||||||
:main-opts ["-m" "cognitect.test-runner"]}
|
:main-opts ["-m" "cognitect.test-runner"]}
|
||||||
|
:kaocha
|
||||||
|
{:extra-deps
|
||||||
|
{lambdaisland/kaocha {:mvn/version "1.0.632"}}
|
||||||
|
:main-opts ["-m" "kaocha.runner"]}
|
||||||
:test-pod
|
:test-pod
|
||||||
{:paths ["src" "test-pod"]
|
{:paths ["src" "test-pod"]
|
||||||
:main-opts ["-m" "pod.test-pod"]}}}
|
:main-opts ["-m" "pod.test-pod"]}}}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,7 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
clojure -A:test -n babashka.pods.jvm-test
|
clojure -A:test -n babashka.pods.jvm-test
|
||||||
|
#clojure -A:test:kaocha --focus babashka.pods.jvm-test
|
||||||
|
|
||||||
clojure -A:sci:test -n babashka.pods.sci-test
|
clojure -A:sci:test -n babashka.pods.sci-test
|
||||||
|
#clojure -A:sci:test:kaocha --focus babashka.pods.sci-test
|
||||||
|
|
|
||||||
|
|
@ -9,5 +9,6 @@
|
||||||
([pod-id] (unload-pod pod-id {}))
|
([pod-id] (unload-pod pod-id {}))
|
||||||
([pod-id opts] (jvm/unload-pod pod-id opts)))
|
([pod-id opts] (jvm/unload-pod pod-id opts)))
|
||||||
|
|
||||||
(defn invoke [pod-id sym args opts]
|
(defn invoke
|
||||||
(jvm/invoke pod-id sym args opts))
|
([pod-id sym args] (invoke pod-id sym args {}))
|
||||||
|
([pod-id sym args opts] (jvm/invoke pod-id sym args opts)))
|
||||||
|
|
|
||||||
|
|
@ -119,8 +119,7 @@
|
||||||
"op" "invoke"
|
"op" "invoke"
|
||||||
"var" (str pod-var)
|
"var" (str pod-var)
|
||||||
"args" (write-fn args)})]
|
"args" (write-fn args)})]
|
||||||
;; see: https://blog.jakubholy.net/2019/core-async-error-handling/
|
(cond handlers nil
|
||||||
(cond handlers handlers
|
|
||||||
:else (let [v @chan]
|
:else (let [v @chan]
|
||||||
(if (instance? Throwable v)
|
(if (instance? Throwable v)
|
||||||
(throw v)
|
(throw v)
|
||||||
|
|
@ -143,6 +142,12 @@
|
||||||
(doseq [[ns-name _] (:namespaces pod)]
|
(doseq [[ns-name _] (:namespaces pod)]
|
||||||
(rns ns-name)))))
|
(rns ns-name)))))
|
||||||
|
|
||||||
|
(def next-pod-id
|
||||||
|
(let [counter (atom 0)]
|
||||||
|
(fn []
|
||||||
|
(let [[o _] (swap-vals! counter inc)]
|
||||||
|
o))))
|
||||||
|
|
||||||
(defn load-pod
|
(defn load-pod
|
||||||
([pod-spec] (load-pod pod-spec nil))
|
([pod-spec] (load-pod pod-spec nil))
|
||||||
([pod-spec {:keys [:remove-ns]}]
|
([pod-spec {:keys [:remove-ns]}]
|
||||||
|
|
@ -207,8 +212,7 @@
|
||||||
|
|
||||||
(defn invoke-public [pod-id fn-sym args opts]
|
(defn invoke-public [pod-id fn-sym args opts]
|
||||||
(let [pod (lookup-pod pod-id)]
|
(let [pod (lookup-pod pod-id)]
|
||||||
(invoke pod fn-sym args opts)
|
(invoke pod fn-sym args opts)))
|
||||||
nil))
|
|
||||||
|
|
||||||
(defn unload-pod [pod-id]
|
(defn unload-pod [pod-id]
|
||||||
(destroy pod-id))
|
(destroy pod-id))
|
||||||
|
|
|
||||||
|
|
@ -24,5 +24,6 @@
|
||||||
([pod-id _opts]
|
([pod-id _opts]
|
||||||
(impl/unload-pod pod-id)))
|
(impl/unload-pod pod-id)))
|
||||||
|
|
||||||
(defn invoke [pod-id sym args opts]
|
(defn invoke
|
||||||
(impl/invoke-public pod-id sym args opts))
|
([pod-id sym args] (invoke pod-id sym args {}))
|
||||||
|
([pod-id sym args opts] (impl/invoke-public pod-id sym args opts)))
|
||||||
|
|
|
||||||
|
|
@ -32,5 +32,6 @@
|
||||||
([pod-id _opts]
|
([pod-id _opts]
|
||||||
(impl/unload-pod pod-id)))
|
(impl/unload-pod pod-id)))
|
||||||
|
|
||||||
(defn invoke [pod-id sym args opts]
|
(defn invoke
|
||||||
(impl/invoke-public pod-id sym args opts))
|
([pod-id sym args] (invoke pod-id sym args {}))
|
||||||
|
([pod-id sym args opts] (impl/invoke-public pod-id sym args opts)))
|
||||||
|
|
|
||||||
|
|
@ -23,13 +23,16 @@
|
||||||
(pod/do-twice (prn :foo))
|
(pod/do-twice (prn :foo))
|
||||||
|
|
||||||
(def callback-result (promise))
|
(def callback-result (promise))
|
||||||
(pods/invoke "pod.test-pod" 'pod.test-pod/add-sync [1 2]
|
(pods/invoke pod-id 'pod.test-pod/add-sync [1 2]
|
||||||
{:handlers {:success
|
{:handlers {:success
|
||||||
(fn [value]
|
(fn [value]
|
||||||
(deliver callback-result value))}})
|
(deliver callback-result value))}})
|
||||||
|
|
||||||
|
(def sync-invoke
|
||||||
|
(pods/invoke pod-id 'pod.test-pod/add-sync [1 2]))
|
||||||
|
|
||||||
(def error-result (promise))
|
(def error-result (promise))
|
||||||
(pods/invoke "pod.test-pod" 'pod.test-pod/add-sync ["1" 2]
|
(pods/invoke pod-id 'pod.test-pod/add-sync ["1" 2]
|
||||||
{:handlers
|
{:handlers
|
||||||
{:error (fn [m]
|
{:error (fn [m]
|
||||||
(deliver error-result m))}})
|
(deliver error-result m))}})
|
||||||
|
|
@ -45,6 +48,7 @@
|
||||||
pod-ns-name
|
pod-ns-name
|
||||||
assoc-result
|
assoc-result
|
||||||
add-result
|
add-result
|
||||||
|
sync-invoke
|
||||||
@stream-results
|
@stream-results
|
||||||
ex-result
|
ex-result
|
||||||
nil-result
|
nil-result
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@
|
||||||
pod.test-pod
|
pod.test-pod
|
||||||
{:a 1, :b 2}
|
{:a 1, :b 2}
|
||||||
6
|
6
|
||||||
|
3
|
||||||
[1 2 3 4 5 6 7 8 9]
|
[1 2 3 4 5 6 7 8 9]
|
||||||
"Illegal arguments / {:args (1 2 3)}"
|
"Illegal arguments / {:args (1 2 3)}"
|
||||||
nil
|
nil
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue