+2011-05-09 Teodor Zlatanov <tzz@lifelogs.com>
+
+ * registry.el (registry-full): Add convenience method.
+ (registry-insert): Use it.
+
+ * gnus-registry.el (gnus-registry-insert): Add wrapper that calls
+ `registry-prune' if `registry-full' returns t.
+ (gnus-registry-handle-action)
+ (gnus-registry-get-or-make-entry, gnus-registry-set-id-key)
+ (gnus-registry-usage-test): Use it.
+
2011-05-07 Julien Danjou <julien@danjou.info>
* shr.el (shr-link): Make shr-link inherit from link by default.
(gnus-message 10 "Gnus registry: new entry for %s is %S"
id
entry)
- (registry-insert db id entry)))
+ (gnus-registry-insert db id entry)))
;; Function for nn{mail|imap}-split-fancy: look up all references in
;; the cache and if a match is found, return that group.
(entries (registry-lookup db (list id))))
(when (null entries)
- (registry-insert db id (list (list 'creation-time (current-time))
- '(group) '(sender) '(subject)))
+ (gnus-registry-insert db id (list (list 'creation-time (current-time))
+ '(group) '(sender) '(subject)))
(setq entries (registry-lookup db (list id))))
(nth 1 (assoc id entries))))
(entry (gnus-registry-get-or-make-entry id)))
(registry-delete db (list id) nil)
(setq entry (cons (cons key vals) (assq-delete-all key entry)))
- (registry-insert db id entry)
+ (gnus-registry-insert db id entry)
entry))
+(defun gnus-registry-insert (db id entry)
+ "Just like `registry-insert' but tries to prune on error."
+ (when (registry-full db)
+ (message "Trying to prune the registry because it's full")
+ (registry-prune db))
+ (registry-insert db id entry)
+ entry)
+
(defun gnus-registry-import-eld (file)
(interactive "fOld registry file to import? ")
;; example content:
(should (equal (gnus-registry-get-id-key "34" 'group) '("togroup")))
(should (equal (gnus-registry-get-id-key "34" 'subject) '("subject 4")))
(message "Trying to insert a duplicate key")
- (should-error (registry-insert db "55" '()))
+ (should-error (gnus-registry-insert db "55" '()))
(message "Looking up individual keys (gnus-registry-get-or-make-entry)")
(should (gnus-registry-get-or-make-entry "22"))
(message "Saving the Gnus registry to %s" tempfile)
(remhash key data)))
keys))
+ (defmethod registry-full ((db registry-db))
+ "Checks if registry-db THIS is full."
+ (< (registry-size db)
+ (oref db :max-hard)))
+
(defmethod registry-insert ((db registry-db) key entry)
"Insert ENTRY under KEY into the registry-db THIS.
Updates the secondary ('tracked') indices as well.
(assert (not (gethash key (oref db :data))) nil
"Key already exists in database")
- (assert (< (registry-size db)
- (oref db :max-hard))
+ (assert (registry-full db)
nil
"registry max-hard size limit reached")