summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/scheduled_agent.clj18
-rw-r--r--src/site.clj13
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)