-;; Event notification/observer framework
-(eval-and-compile
- (luna-define-class elmo-event-handler ()))
-
-(luna-define-generic elmo-event-handler-flag-changed (handler numbers)
- "Notify flag of the messages with NUMBERS is changed.")
-
-(luna-define-generic elmo-event-handler-cache-changed (handler number)
- "Called when cache status of the message with NUMBER is changed.")
-
-(defun elmo-folder-add-handler (folder handler)
- (unless (memq handler (elmo-folder-handlers-internal folder))
- (elmo-folder-set-handlers-internal
- folder
- (cons handler (elmo-folder-handlers-internal folder)))))
-
-(defun elmo-folder-remove-handler (folder handler)
- (elmo-folder-set-handlers-internal
- folder
- (delq handler (elmo-folder-handlers-internal folder))))
-
-(defun elmo-folder-notify-event (folder event &rest args)
- (when (elmo-folder-handlers-internal folder)
- (let ((message (format "elmo-event-handler-%s" event)))
- (dolist (handler (elmo-folder-handlers-internal folder))
- (apply #'luna-send handler message handler args)))))
-