[Checkins] SVN: zc.demostorage2/trunk/src/zc/demostorage2/ Added some methods needed bu ZEO.

Jim Fulton jim at zope.com
Tue Jan 22 19:42:39 EST 2008


Log message for revision 83102:
  Added some methods needed bu ZEO.
  

Changed:
  U   zc.demostorage2/trunk/src/zc/demostorage2/README.txt
  U   zc.demostorage2/trunk/src/zc/demostorage2/__init__.py
  U   zc.demostorage2/trunk/src/zc/demostorage2/tests.py

-=-
Modified: zc.demostorage2/trunk/src/zc/demostorage2/README.txt
===================================================================
--- zc.demostorage2/trunk/src/zc/demostorage2/README.txt	2008-01-23 00:18:06 UTC (rev 83101)
+++ zc.demostorage2/trunk/src/zc/demostorage2/README.txt	2008-01-23 00:42:39 UTC (rev 83102)
@@ -146,11 +146,11 @@
     >>> storage.load(p64(1), '') == base.load(p64(1), '')
     True
 
-    >>> serial = base.load(p64(0), '')[1] 
+    >>> serial = base.getTid(p64(0))
     >>> storage.loadSerial(p64(0), serial) == base.loadSerial(p64(0), serial)
     True
 
-    >>> serial = changes.load(p64(0), '')[1] 
+    >>> serial = changes.getTid(p64(0))
     >>> storage.loadSerial(p64(0), serial) == changes.loadSerial(p64(0),
     ...                                                          serial)
     True

Modified: zc.demostorage2/trunk/src/zc/demostorage2/__init__.py
===================================================================
--- zc.demostorage2/trunk/src/zc/demostorage2/__init__.py	2008-01-23 00:18:06 UTC (rev 83101)
+++ zc.demostorage2/trunk/src/zc/demostorage2/__init__.py	2008-01-23 00:42:39 UTC (rev 83102)
@@ -29,10 +29,12 @@
 
         supportsUndo = getattr(changes, 'supportsUndo', None)
         if supportsUndo is not None and supportsUndo():
-            self.supportsUndo = changes.supportsUndo
-            self.undo = changes.undo
-            self.undoLog = changes.undoLog
-            self.undoInfo = changes.undoInfo
+            for meth in ('supportsUndo', 'undo', 'undoLog', 'undoInfo'):
+                setattr(self, meth, getattr(changes, meth))
+
+        for meth in ('getSize', 'history', 'isReadOnly', 'sortKey',
+                     'tpc_transaction'):
+            setattr(self, meth, getattr(changes, meth))
     
         self._oid = max(u64(changes.new_oid()), 1l << 63)
         self._lock = threading.RLock()
@@ -51,14 +53,23 @@
     def __repr__(self):
         return "<%s: %s>" % (self.__class__.__name__, self.getName())
 
-    def getSize(self):
-        return self.changes.getSize()
+    def getTid(self, oid):
+        try:
+            return self.changes.getTid(oid)
+        except ZODB.POSException.POSKeyError:
+            return self.base.getTid(oid)
 
-    def history(self, *args, **kw):
-        return self.changes.history(*args, **kw)
+    @synchronized
+    def lastInvalidations(self, size):
+        n = 0
+        for v in self.changes.lastInvalidations(size):
+            n += 1
+            yield v
 
-    def isReadOnly(self):
-        return self.changes.isReadOnly()
+        size -= n
+        if size > 0:
+            for v in self.base.lastInvalidations(size):
+                yield v
 
     @synchronized
     def lastTransaction(self):
@@ -103,9 +114,6 @@
         self.base.registerDB(db)
         self.changes.registerDB(db)
 
-    def sortKey(self):
-        return self.changes.sortKey()
-
     @synchronized
     def store(self, oid, serial, data, version, transaction):
         assert version==''
@@ -156,7 +164,7 @@
         self._transaction = None
         self.changes.tpc_finish(transaction)
         self._commit_lock.release()
-
+    
     @synchronized
     def tpc_vote(self, transaction):
         if self._transaction is not transaction:

Modified: zc.demostorage2/trunk/src/zc/demostorage2/tests.py
===================================================================
--- zc.demostorage2/trunk/src/zc/demostorage2/tests.py	2008-01-23 00:18:06 UTC (rev 83101)
+++ zc.demostorage2/trunk/src/zc/demostorage2/tests.py	2008-01-23 00:42:39 UTC (rev 83102)
@@ -31,7 +31,8 @@
     ...         print self.name, db
     ...     def close(self):
     ...         print self.name, 'closed'
-    ...     getName = sortKey = getSize = __len__ = None
+    ...     getName = sortKey = getSize = __len__ = history = getTid = None
+    ...     isReadOnly = tpc_transaction = None
     ...     supportsUndo = undo = undoLog = undoInfo = None
     ...     supportsTransactionalUndo = None
     ...     def new_oid(self):



More information about the Checkins mailing list