Advertisement
Guest User

Untitled

a guest
Aug 6th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (defn start-command-loop
  2.   [{:keys [cmd-ch process] :as prev-state}]
  3.   (if (and cmd-ch process)
  4.     (do (log/warn "already started")
  5.         prev-state)
  6.     (do
  7.       (log/info "starting liquidsoap command loop")
  8.       (let [cmd-ch (async/chan (async/sliding-buffer 1000))
  9.             liq-state (atom {})]
  10.         (future  (loop []
  11.                    (let [{:keys [cmd data]} (async/<!! cmd-ch)]
  12.                      (swap! liq-state  #(try
  13.                                           (case  cmd
  14.                                             :start (if (process-live? %) %
  15.                                                        (start! data))
  16.                                             :stop (stop-liq! %)
  17.                                             :quit {})
  18.                                           (catch Throwable e
  19.                                             (log/warn e))))
  20.                      (when-not (= :quit cmd) (recur))))
  21.                  (log/debug "exiting command loop"))
  22.         {:cmd-ch cmd-ch
  23.          :liq-state liq-state}))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement