[Zodb-checkins] SVN: ZODB/trunk/src/persistent/interfaces.py
Removed ICache interface -- it's just too far removed from
current reality.
Tim Peters
tim.one at comcast.net
Tue Jun 22 17:08:29 EDT 2004
Log message for revision 25948:
Removed ICache interface -- it's just too far removed from current reality.
-=-
Modified: ZODB/trunk/src/persistent/interfaces.py
===================================================================
--- ZODB/trunk/src/persistent/interfaces.py 2004-06-22 21:03:48 UTC (rev 25947)
+++ ZODB/trunk/src/persistent/interfaces.py 2004-06-22 21:08:29 UTC (rev 25948)
@@ -269,83 +269,3 @@
timestamp supplied by Python's time.time().
"""
-# XXX Should we keep the following? Doesn't seem too useful, and
-# XXX we don't actually implement this interface (e.g., we have no
-# XXX .statistics() method).
-
-class ICache(Interface):
- """In-memory object cache.
-
- The cache serves two purposes. It peforms pointer swizzling, and
- it keeps a bounded set of recently used but otherwise unreferenced
- in objects to avoid the cost of re-loading them.
-
- Pointer swizzling is the process of converting between persistent
- object ids and Python object ids. When a persistent object is
- serialized, its references to other persistent objects are
- represented as persitent object ids (oids). When the object is
- unserialized, the oids are converted into references to Python
- objects. If several different serialized objects refer to the
- same object, they must all refer to the same object when they are
- unserialized.
-
- A cache stores persistent objects, but it treats ghost objects and
- non-ghost or active objects differently. It has weak references
- to ghost objects, because ghost objects are only stored in the
- cache to satisfy the pointer swizzling requirement. It has strong
- references to active objects, because it caches some number of
- them even if they are unreferenced.
-
- The cache keeps some number of recently used but otherwise
- unreferenced objects in memory. We assume that there is a good
- chance the object will be used again soon, so keeping it memory
- avoids the cost of recreating the object.
-
- An ICache implementation is intended for use by an
- IPersistentDataManager.
- """
-
- def get(oid):
- """Return the object from the cache or None."""
-
- def set(oid, obj):
- """Store obj in the cache under oid.
-
- obj must implement IPersistent
- """
-
- def remove(oid):
- """Remove oid from the cache if it exists."""
-
- def invalidate(oids):
- """Make all of the objects in oids ghosts.
-
- `oids` is an iterable object that yields oids.
-
- The cache must attempt to change each object to a ghost by
- calling _p_deactivate().
-
- If an oid is not in the cache, ignore it.
- """
-
- def clear():
- """Invalidate all the active objects."""
-
- def activate(oid):
- """Notification that object oid is now active.
-
- The caller is notifying the cache of a state change.
-
- Raises LookupError if oid is not in cache.
- """
-
- def shrink():
- """Remove excess active objects from the cache."""
-
- def statistics():
- """Return dictionary of statistics about cache size.
-
- Contains at least the following keys:
- active -- number of active objects
- ghosts -- number of ghost objects
- """
More information about the Zodb-checkins
mailing list