[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