r8777: improvements background monitor
authorKevin M. Rosenberg <kevin@rosenberg.net>
Mon, 29 Mar 2004 18:33:27 +0000 (18:33 +0000)
committerKevin M. Rosenberg <kevin@rosenberg.net>
Mon, 29 Mar 2004 18:33:27 +0000 (18:33 +0000)
debian/changelog
logger.lisp

index 0b71abf31313614547b500e07cb0ea0cfb682c3a..1aaf4ff270597e151d2553aec04ff437a0207098 100644 (file)
@@ -1,3 +1,9 @@
+cl-irc-logger (0.8.3-1) unstable; urgency=low
+
+  * New upstream, improvements to background monitor
+
+ -- Kevin M. Rosenberg <kmr@debian.org>  Mon, 29 Mar 2004 11:32:52 -0700
+
 cl-irc-logger (0.8.2-1) unstable; urgency=low
 
   * Fix compilation on SBCL
index 14294517eca26b1827a6f374aad079c33c88d02d..71b0723f18f5d48bbf7f2f24f66c28bbda2e746b 100644 (file)
        nick)
        nil)
       (t
-       (ignore-errors (irc:quit (connection logger) ""))
-       (stop-background-message-handler (handler logger))
+       (ignore-errors (quit-with-timeout (connection logger) ""))
+       (ignore-errors (stop-background-message-handler (handler logger)))
        (sleep 1)
        (dolist (channel (channels logger))
         (let ((c (connection logger)))
           (when c
             (ignore-errors (remove-channel c (find-channel c (name channel)))))))
+       (ignore-errors (add-private-log-entry logger "Deleting loggers with nick of '~A' [remove-logger]." nick))
        (when (private-log-stream logger)
         (close (private-log-stream logger)))
        (when (unknown-log-stream logger)
   #+allegro (mp:with-timeout (*timeout* nil)
              (%is-connected logger)))
 
-(defun quit-maybe-timeout (connection msg)
+(defun quit-with-timeout (connection msg)
   #-allegro (quit connection msg)
   #+allegro (mp:with-timeout (*timeout* nil)
              (quit connection msg)))
     
     (log-disconnection logger)
     (when (connection logger)
-      (ignore-errors (quit-maybe-timeout (connection logger) "Client terminated by server"))
+      (ignore-errors (quit-with-timeout (connection logger) "Client terminated by server"))
       (setf *recon-nick* (nickname logger)
            *recon-server* (server logger)
            *recon-username* (username logger)
   ;; run forever
   (loop
    do
-   (block main-loop
-     (dolist (logger *loggers*)
-       (do ((warning-time (warning-message-utime logger) (warning-message-utime logger)))
-          ((or (is-connected logger) (null warning-time)))
-        (cond
-          ((and warning-time (> (- (get-universal-time) warning-time) 180))
-           ;;give up frequent checking because no disconnection despite waiting
-           (setf (warning-message-utime logger) nil))
-          ((not (is-connected logger))
-           (unless warning-time
-             (setf (warning-message-utime logger) (get-universal-time)))
-           (attempt-reconnection logger)
-           ;;after a succesful reconnection, the value of logger will be invalid 
-           (sleep 30)
-           (return-from main-loop))
-          (t
-           (daemon-sleep 30)))))
-     (do ((i 0 (1+ i)))
-        ((or (>= i 20) (some (lambda (logger) (warning-message-utime logger)) *loggers*))) 
-       (daemon-sleep 15)))))
-  
+   (monitor-once)))
+
+(defun monitor-once ()
+  (dolist (logger *loggers*)
+    (do ((warning-time (warning-message-utime logger) (warning-message-utime logger)))
+       ((and (is-connected logger) (null warning-time)))
+      (cond
+       ((and warning-time (> (- (get-universal-time) warning-time) 180))
+        ;;give up frequent checking because no disconnection despite waiting
+        (setf (warning-message-utime logger) nil))
+       ((not (is-connected logger))
+        (unless warning-time
+          (setf (warning-message-utime logger) (get-universal-time)))
+        (attempt-reconnection logger)
+        ;;after a succesful reconnection, the value of logger will be invalid 
+        (sleep 30)
+        (return-from monitor-once))
+       (t
+        (daemon-sleep 30)))))
+  (do ((i 0 (1+ i)))
+      ((or (>= i 10) (some (lambda (logger) (warning-message-utime logger)) *loggers*))) 
+    (daemon-sleep 15)))
+