]> code.delx.au - gnu-emacs/blobdiff - lisp/gnus/gnus-int.el
Merge from emacs-24; up to 2012-12-06T01:39:03Z!monnier@iro.umontreal.ca
[gnu-emacs] / lisp / gnus / gnus-int.el
index 0a02138ee58fa8675396e90512546cc054330109..81e0252cf9337affda6e6bc8e71bf17ea8ff4c1d 100644 (file)
@@ -249,16 +249,23 @@ If it is down, start it up (again)."
 
 (defvar gnus-backend-trace nil)
 
+(defun gnus-backend-trace (type form)
+  (with-current-buffer (get-buffer-create "*gnus trace*")
+    (buffer-disable-undo)
+    (goto-char (point-max))
+    (insert (format-time-string "%H:%M:%S")
+           (format " %.2fs %s %S\n"
+                   (if (numberp gnus-backend-trace)
+                       (- (float-time) gnus-backend-trace)
+                     0)
+                   type form))
+    (setq gnus-backend-trace (float-time))))
+
 (defun gnus-open-server (gnus-command-method)
   "Open a connection to GNUS-COMMAND-METHOD."
   (when (stringp gnus-command-method)
     (setq gnus-command-method (gnus-server-to-method gnus-command-method)))
-  (when gnus-backend-trace
-    (with-current-buffer (get-buffer-create "*gnus trace*")
-      (buffer-disable-undo)
-      (goto-char (point-max))
-      (insert (format-time-string "%H:%M:%S")
-             (format " %S\n" gnus-command-method))))
+  (gnus-backend-trace :opening gnus-command-method)
   (let ((elem (assoc gnus-command-method gnus-opened-servers))
        (server (gnus-method-to-server-name gnus-command-method)))
     ;; If this method was previously denied, we just return nil.
@@ -333,6 +340,7 @@ If it is down, start it up (again)."
            (save-excursion
              (gnus-agent-possibly-synchronize-flags-server
               gnus-command-method)))
+         (gnus-backend-trace :opened gnus-command-method)
           result)))))
 
 (defun gnus-close-server (gnus-command-method)
@@ -353,9 +361,13 @@ If it is down, start it up (again)."
   "Read and update infos from GNUS-COMMAND-METHOD."
   (when (stringp gnus-command-method)
     (setq gnus-command-method (gnus-server-to-method gnus-command-method)))
-  (funcall (gnus-get-function gnus-command-method 'finish-retrieve-group-infos)
-          (nth 1 gnus-command-method)
-          infos data))
+  (gnus-backend-trace :finishing gnus-command-method)
+  (prog1
+      (funcall (gnus-get-function gnus-command-method
+                                 'finish-retrieve-group-infos)
+              (nth 1 gnus-command-method)
+              infos data)
+    (gnus-backend-trace :finished gnus-command-method)))
 
 (defun gnus-retrieve-group-data-early (gnus-command-method infos)
   "Start early async retrieval of data from GNUS-COMMAND-METHOD."