[Zope3-checkins] CVS: Zope3/src/zodb/storage - base.py:1.31

Barry Warsaw barry@zope.com
Thu, 10 Jul 2003 13:35:24 -0400


Update of /cvs-repository/Zope3/src/zodb/storage
In directory cvs.zope.org:/tmp/cvs-serv26261

Modified Files:
	base.py 
Log Message:
Better coverage for lastTransaction() by moving the most common usage
into the BaseStorage class.  Since this method is required by
IStorage, and most implementations do it the same way, it makes
sense.

BaseStorage.__init__(): Initialize self._ltid to ZERO.

BaseStorage.lastTransaction(): Simply return self._ltid

BerkeleyBase._finish(): Refactor common implementations from derived
classes.  This now sets self._ltid to the tid argument so
BDBMinimalStorage now gets its lastTransaction() implementation for
free.

BerkeleyBase._abort(): Base classes must implement this


=== Zope3/src/zodb/storage/base.py 1.30 => 1.31 ===
--- Zope3/src/zodb/storage/base.py:1.30	Thu Jun 19 17:41:10 2003
+++ Zope3/src/zodb/storage/base.py	Thu Jul 10 13:35:18 2003
@@ -121,6 +121,14 @@
         self._ts = newTimeStamp()
         self._serial = self._ts.raw()
         self._oid = ZERO
+        self._ltid = ZERO
+
+    def lastTransaction(self):
+        """Return transaction id for last committed transaction.
+
+        If no transactions have yet been committed, return ZERO.
+        """
+        return self._ltid
 
     def abortVersion(self, src, transaction):
         if transaction is not self._transaction:
@@ -662,23 +670,15 @@
         pass
 
     def _finish(self, tid):
-        """Called from BaseStorage.tpc_finish(), this commits the underlying
-        BerkeleyDB transaction.
-        """
-        self._transaction.commit()
+        self._withtxn(self._docommit, self._serial)
+        self._ltid = tid
 
     def _abort(self):
-        """Called from BaseStorage.tpc_abort(), this aborts the underlying
-        BSDDB transaction.
-        """
-        self._transaction.abort()
+        raise NotImplementedError
 
     def _clear_temp(self):
-        """Called from BaseStorage.tpc_abort(), BaseStorage.tpc_begin(),
-        BaseStorage.tpc_finish(), this clears out the temporary log file
-        """
-        # BAW: no-op this since the right CommitLog file operations are
-        # performed by the methods in the derived storage class.
+        # This method is called from BaseStorage's tpcBegin(), tpcAbort() and
+        # tpcFinish(), but the Berkeley storages don't have a temp file.
         pass
 
     def _setVersion(self, txn, vstr):