Added error handling to go blocks.

This commit is contained in:
Alexander K. Hudek 2014-11-04 18:55:59 -05:00
parent 7d61caea52
commit 7684eb6506
3 changed files with 24 additions and 12 deletions

View file

@ -1,4 +1,4 @@
(defproject views "0.4.1"
(defproject views "0.4.2-SNAPSHOT"
:description "You underestimate the power of the SQL side"
:url "https://github.com/diligenceengine/views"

View file

@ -6,7 +6,7 @@
[views.db.load :refer [initial-view]]
[views.db.util :refer [with-retry]]
[clojure.tools.logging :refer [debug info warn error]]
[clojure.core.async :refer [put! <! go thread]]
[clojure.core.async :refer [thread]]
[clojure.java.jdbc :as j]))
(def default-ns :default-ns)

View file

@ -2,28 +2,40 @@
(:require
[views.subscribed-views :refer [subscribe-views unsubscribe-views disconnect]]
[clojure.core.async :refer [go go-loop chan pub sub unsub close! >! >!! <! <!! filter<]]
[clojure.tools.logging :refer [debug]]))
[clojure.stacktrace :refer [print-stack-trace]]
[clojure.tools.logging :refer [error debug]]))
(defn log-exception
"Takes a string and exception and logs it to error."
[s e]
(error s e (.getMessage e) (print-stack-trace e)))
(defn handle-subscriptions!
[subscribed-views subscriptions]
(go (while true
(let [sub (<! subscriptions)]
(debug "Subscribing (in router): " sub)
(subscribe-views subscribed-views sub)))))
(try
(let [sub (<! subscriptions)]
(debug "Subscribing (in router): " sub)
(subscribe-views subscribed-views sub))
(catch Exception e (log-exception "when subscribing" e))))))
(defn handle-unsubscriptions!
[subscribed-views unsubscriptions]
(go (while true
(let [unsub (<! unsubscriptions)]
(debug "Unsubscribing (in router): " unsub)
(unsubscribe-views subscribed-views unsub)))))
(try
(let [unsub (<! unsubscriptions)]
(debug "Unsubscribing (in router): " unsub)
(unsubscribe-views subscribed-views unsub))
(catch Exception e (log-exception "when unsubscribing" e))))))
(defn handle-disconnects!
[subscribed-views disconnects]
(go (while true
(let [disc (<! disconnects)]
(debug "Disconnecting (in router): " disc)
(disconnect subscribed-views disc)))))
(try
(let [disc (<! disconnects)]
(debug "Disconnecting (in router): " disc)
(disconnect subscribed-views disc)
(catch Exception e (log-exception "disconnect" e)))))))
(defn init!
[{:keys [base-subscribed-views] :as conf} client-chan]