From 91430f25eea4da648ee84b2aebe498670baa949b Mon Sep 17 00:00:00 2001 From: Scott Ostler Date: Mon, 14 Jun 2010 17:17:48 -0400 Subject: Truncate message list --- src/rooms.clj | 9 ++++++--- src/utils.clj | 10 +++++++++- 2 files changed, 15 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/rooms.clj b/src/rooms.clj index c1b596b..a7fe933 100644 --- a/src/rooms.clj +++ b/src/rooms.clj @@ -91,13 +91,16 @@ (alter (room :users) assoc (user :nick) user)) ; Note: To ensure that the msg's timestamp is consistent -; with other msg creations, build-msg should be called -; from within a dosync. +; with other msg creations, build-msg should be used +; within a dosync. (defn build-msg [nick content msg-id] (struct message-struct nick content (new Date) msg-id)) + +(def message-count-limit 200) + (defn add-message [msg room] - (alter (room :messages) (swap cons) msg)) + (insert-and-truncate! (room :messages) msg message-count-limit)) (defn insert-message-into-db! [user-id room-id content is-image] (:message_id diff --git a/src/utils.clj b/src/utils.clj index 3f1a7b1..779bb7b 100755 --- a/src/utils.clj +++ b/src/utils.clj @@ -25,7 +25,7 @@ (.setDatabaseName db-name) (.setUser db-user) (.setPassword db-pass) - (.setMaxConnections 3))})) + (.setMaxConnections 20))})) ;; moved this to here which doesn't seem right... maybe a 'settings.clj' or something? (def *dumps-per-page* 20) @@ -98,6 +98,14 @@ [(int (/ (- f# s#) 1e6)) r#])) +(def truncation-factor 2) + +(defn insert-and-truncate! [list-ref item soft-limit] + (if (> (count @list-ref) (* soft-limit truncation-factor)) + (ref-set list-ref + (cons item (take soft-limit @list-ref))) + (ref-set list-ref (cons item @list-ref)))) + ;; Formatters (def yyyy-mm-dd-formatter (new SimpleDateFormat "yyyy-MM-dd")) -- cgit v1.2.3-70-g09d2