diff options
| author | sostler <sbostler@gmail.com> | 2010-06-05 03:22:44 -0400 |
|---|---|---|
| committer | sostler <sbostler@gmail.com> | 2010-06-05 03:22:44 -0400 |
| commit | dcc43bef85f4ae2da747a14c7e94de035d01d8bb (patch) | |
| tree | 0df25da8e2b5d389b2b4495d6eeffb33ddd87dfb | |
| parent | f9024ac302e7387cccc821174ec4c68e25251af3 (diff) | |
scheduled-agents must be started now
| -rw-r--r-- | src/scheduled_agent.clj | 18 | ||||
| -rw-r--r-- | src/site.clj | 13 |
2 files changed, 22 insertions, 9 deletions
diff --git a/src/scheduled_agent.clj b/src/scheduled_agent.clj index 2d1588f..d2e1454 100644 --- a/src/scheduled_agent.clj +++ b/src/scheduled_agent.clj @@ -1,8 +1,10 @@ -(ns scheduled-agent ++(ns scheduled-agent (:import java.util.concurrent.Executors java.util.concurrent.TimeUnit) (:use clojure.stacktrace)) +; This is starting to get less agent-like + (defn- runnable-proxy [f] (proxy [Runnable] [] (run [] (f)))) @@ -15,12 +17,12 @@ (let [val (func)] (dosync (ref-set data val))) (catch Exception e - (print-stack-trace e 5))))) - future (.scheduleWithFixedDelay pool pfunc 0 period TimeUnit/SECONDS)] + (print-stack-trace e 5)))))] {:pool pool :data data - :future future + :future (ref nil) :func func + :pfunc pfunc :period period :init init})) @@ -28,9 +30,15 @@ "Return current contents of agent." @d) +(defn start! [{f :future pfunc :pfunc period :period pool :pool}] + (dosync + (if (nil? (ensure f)) + (ref-set f (.scheduleWithFixedDelay pool pfunc 0 period TimeUnit/SECONDS))))) + (defn cancel! [{f :future}] "Cancel automatic updating of agent data. Cannot be restarted." - (.cancel f false)) + (if @f + (.cancel @f false))) (defn update! [{func :func data :data}] "Synchronously update contents of agent." diff --git a/src/site.clj b/src/site.clj index 6eba82b..571aafb 100644 --- a/src/site.clj +++ b/src/site.clj @@ -261,14 +261,14 @@ (defn load-invalid-nicks [] (set (read-lines *reserved-nicks-path*))) -(def *reserved-nicks* +(def reserved-nicks (scheduled-agent load-invalid-nicks *reserved-nicks-refresh-period-sec* (load-invalid-nicks))) (defn nick-reserved? [nick] (let [query "SELECT * FROM users WHERE LOWER(nick) = ? LIMIT 1"] - (or (contains? (poll *reserved-nicks*) nick) + (or (contains? (poll reserved-nicks) nick) (> (count (do-select [query (lower-case nick)])) 0)))) (defn register [session params] @@ -993,8 +993,6 @@ FROM users u (GET "/mutes" (show-mutes session)) (POST "/mute" (mute! session params)) (POST "/cancel-mute" (handle-cancel-mute! session params)) - (GET "/feed-test" (feed-test-page session)) - (POST "/feed-test" (feed-test session params)) (GET "/profile-test/:t" (profile session "ryder" "0" (params :t))) ;; Footer pages @@ -1077,6 +1075,13 @@ FROM users u (apply parse-command-args *command-line-args*)) (load-rooms!) +(start! reserved-nicks) (start-server (options :port)) +(start! *user-scores*) +(start! *user-info*) + +(Thread/sleep 3000) ; Delay these to reduce start-load (start-user-flusher!) (start-session-pruner!) +(start! feed-downloader) +(start! feed-inserter) |
