File tree Expand file tree Collapse file tree
src/main/clojure/cljs/repl Expand file tree Collapse file tree Original file line number Diff line number Diff line change 2222 [cljs.stacktrace :as st]
2323 [cljs.analyzer :as ana]
2424 [cljs.build.api :as build])
25- (:import [java.util.concurrent Executors]))
25+ (:import [java.util.concurrent Executors ConcurrentHashMap ]))
2626
2727(def ^:dynamic browser-state nil )
2828(def ^:dynamic ordering nil )
2929(def ^:dynamic es nil )
30+ (def outs (ConcurrentHashMap. ))
3031
3132(def ext->mime-type
3233 {" .html" " text/html"
239240 (send-via es ordering add-in-order order f)
240241 (send-via es ordering run-in-order))
241242
242- (defmethod handle-post :print [{:keys [content order]} conn _]
243+ (defmethod handle-post :print [{:keys [repl content order]} conn _]
243244 (constrain-order order
244245 (fn []
245- (print (read-string content))
246- (.flush *out*)))
246+ (binding [*out* (.get outs repl)]
247+ (print (read-string content))
248+ (.flush *out*))))
247249 (server/send-and-close conn 200 " ignore__" ))
248250
249251(defmethod handle-post :result [{:keys [content order]} conn _]
341343 (if launch-browser
342344 (maybe-browse-url base-url)
343345 (println (waiting-to-connect-message base-url)))))))
346+ (.put outs (.getName (Thread/currentThread )) *out*)
344347 (swap! server-state update :listeners inc))
345348
346349(defrecord BrowserEnv []
356359 (-load [this provides url]
357360 (load-javascript this provides url))
358361 (-tear-down [this]
362+ (.remove outs (.getName (Thread/currentThread )))
359363 (let [server-state (:server-state this)]
360364 (when (zero? (:listeners (swap! server-state update :listeners dec)))
361365 (binding [server/state server-state] (server/stop ))
You can’t perform that action at this time.
0 commit comments