Make unload and invoke take ret val of load-pod

This commit is contained in:
Michiel Borkent 2020-10-21 14:10:31 +02:00
parent a522cb834f
commit df334946b9
2 changed files with 27 additions and 20 deletions

View file

@ -6,9 +6,9 @@
([pod-spec opts] (jvm/load-pod pod-spec opts)))
(defn unload-pod
([pod-id] (unload-pod pod-id {}))
([pod-id opts] (jvm/unload-pod pod-id opts)))
([pod-id-or-pod] (unload-pod pod-id-or-pod {}))
([pod-id-or-pod opts] (jvm/unload-pod pod-id-or-pod opts)))
(defn invoke
([pod-id sym args] (invoke pod-id sym args {}))
([pod-id sym args opts] (jvm/invoke pod-id sym args opts)))
([pod-id-or-pod sym args] (invoke pod-id-or-pod sym args {}))
([pod-id-or-pod sym args opts] (jvm/invoke pod-id-or-pod sym args opts)))

View file

@ -190,22 +190,28 @@
(def pods (atom {}))
(defn get-pod-id [x]
(if (map? x)
(:pod/id x)
x))
(defn lookup-pod [pod-id]
(get @pods pod-id))
(defn destroy [pod-id]
(when-let [pod (lookup-pod pod-id)]
(if (contains? (:ops pod) :shutdown)
(do (write (:stdin pod)
{"op" "shutdown"
"id" (next-id)})
(.waitFor ^Process (:process pod)))
(.destroy ^Process (:process pod)))
(when-let [rns (:remove-ns pod)]
(doseq [[ns-name _] (:namespaces pod)]
(rns ns-name))))
(swap! pods dissoc pod-id)
nil)
(defn destroy [pod-id-or-pod]
(let [pod-id (get-pod-id pod-id-or-pod)]
(when-let [pod (lookup-pod pod-id)]
(if (contains? (:ops pod) :shutdown)
(do (write (:stdin pod)
{"op" "shutdown"
"id" (next-id)})
(.waitFor ^Process (:process pod)))
(.destroy ^Process (:process pod)))
(when-let [rns (:remove-ns pod)]
(doseq [[ns-name _] (:namespaces pod)]
(rns ns-name))))
(swap! pods dissoc pod-id)
nil))
(def next-pod-id
(let [counter (atom 0)]
@ -332,8 +338,9 @@
@prom))
(defn invoke-public [pod-id fn-sym args opts]
(let [pod (lookup-pod pod-id)]
(let [pod-id (get-pod-id pod-id)
pod (lookup-pod pod-id)]
(invoke pod fn-sym args opts)))
(defn unload-pod [pod-id]
(destroy pod-id))
(defn unload-pod [pod-id-or-pod]
(destroy pod-id-or-pod))