diff --git a/src/plauna/core/events.clj b/src/plauna/core/events.clj index d58c851..1a3b37e 100644 --- a/src/plauna/core/events.clj +++ b/src/plauna/core/events.clj @@ -1,4 +1,7 @@ -(ns plauna.core.events) +(ns plauna.core.events + (:require + [clojure.core.async :refer [chan go telemere!) @@ -22,6 +23,11 @@ (defmulti parse-cli-arg (fn [arg] (first (s/split arg #"=")))) (defmethod parse-cli-arg "--config-file" [arg-string] {:config-file (second (s/split arg-string #"="))}) +(def event-register {:enrichment-event-loop (fn [] (analysis/enrichment-event-loop @messaging/main-publisher @messaging/main-chan)) + :client-event-loop (fn [] (client/client-event-loop @messaging/main-publisher)) + :database-event-loop (fn [] (database/database-event-loop @messaging/main-publisher)) + :parser-event-loop (fn [] (parser/parser-event-loop @messaging/main-publisher @messaging/main-chan))}) + (defn start-imap-client [config] (let [listen-channel (chan 10)] @@ -30,12 +36,6 @@ (client/create-folder-monitor client-config listen-channel)) (t/log! :debug "Listening to new emails from listen-channel"))) -(defn start-event-loops [main-publisher main-channel] - (parser/parser-event-loop main-publisher main-channel) - (database/database-event-loop main-publisher) - (client/client-event-loop main-publisher) - (analysis/enrichment-event-loop main-publisher main-channel)) - (defn -main [& args] (let [parsed-config (reduce (fn [acc val] (conj acc (parse-cli-arg val))) {} args)] @@ -44,5 +44,5 @@ (doseq [address (:addresses (:email (files/config)))] (database/add-to-my-addresses address)) (database/create-db) (start-imap-client (files/config)) - (start-event-loops @messaging/main-publisher @messaging/main-chan) + (events/start-event-loops event-register) (server/start-server (files/config)))) diff --git a/test/plauna/core/events_test.clj b/test/plauna/core/events_test.clj new file mode 100644 index 0000000..7621a77 --- /dev/null +++ b/test/plauna/core/events_test.clj @@ -0,0 +1,37 @@ +(ns plauna.core.events-test + (:require [plauna.core.events :as events] + [clojure.core.async :as async] + [clojure.test :as test])) + +(test/deftest return-key-on-complete-works + (let [test-chan (async/chan) + test-fn (fn [] (async/go (async/