method arguments)))
(setq elmo-dop-queue (nconc elmo-dop-queue (list queue)))))
+(defvar elmo-dop-queue-method-name-alist
+ '((elmo-folder-append-buffer-dop-delayed . "Append")
+ (elmo-folder-delete-messages-dop-delayed . "Delete")
+ (elmo-message-encache . "Encache")
+ (elmo-create-folder . "Create")
+ (elmo-folder-mark-as-read . "Read")
+ (elmo-folder-unmark-read . "Unread")
+ (elmo-folder-mark-as-important . "Important")
+ (elmo-folder-unmark-important . "Unimportant")))
+
+(defmacro elmo-dop-queue-method-name (queue)
+ `(cdr (assq (elmo-dop-queue-method ,queue)
+ elmo-dop-queue-method-name-alist)))
+
(defun elmo-dop-queue-flush (&optional force)
"Flush disconnected operations.
If optional argument FORCE is non-nil, try flushing all operation queues
numbers)))
t)
-(defsubst elmo-message-encache-dop (folder number)
- (elmo-dop-queue-append folder 'elmo-message-encache (list number)))
+(defsubst elmo-message-encache-dop (folder number &optional read)
+ (elmo-dop-queue-append folder 'elmo-message-encache (list number read)))
(defsubst elmo-create-folder-dop (folder)
(elmo-dop-queue-append folder 'elmo-folder-create nil))
;;; Delayed operation (executed at online status).
(defun elmo-folder-append-buffer-dop-delayed (folder unread number set-number)
- (let ((spool-folder (elmo-dop-spool-folder folder)))
+ (let ((spool-folder (elmo-dop-spool-folder folder))
+ failure saved)
(with-temp-buffer
(elmo-message-fetch spool-folder number
(elmo-make-fetch-strategy 'entire)
nil (current-buffer) 'unread)
(condition-case nil
- (elmo-folder-append-buffer folder unread set-number)
- (error
- ;; Append failed...
- (elmo-folder-append-buffer (elmo-make-folder elmo-lost+found-folder)
- unread set-number)))
- (elmo-folder-delete-messages spool-folder (list number))
+ (setq failure (not
+ (elmo-folder-append-buffer folder unread set-number)))
+ (error (setq failure t)))
+ (when failure
+ ;; Append failed...
+ (setq saved (elmo-folder-append-buffer
+ (elmo-make-folder elmo-lost+found-folder)
+ unread set-number)))
+ (if (or (not failure)
+ saved)
+ (elmo-folder-delete-messages spool-folder (list number)))
t)))
(defun elmo-folder-delete-messages-dop-delayed (folder number-alist)