[Zope3-checkins] CVS: Zope3/src/transaction -
_transaction.py:1.1.2.19
Jeremy Hylton
jeremy at zope.com
Mon Mar 22 16:38:21 EST 2004
Update of /cvs-repository/Zope3/src/transaction
In directory cvs.zope.org:/tmp/cvs-serv11438
Modified Files:
Tag: jeremy-txn-branch
_transaction.py
Log Message:
Preliminary code to track transaction status.
=== Zope3/src/transaction/_transaction.py 1.1.2.18 => 1.1.2.19 ===
--- Zope3/src/transaction/_transaction.py:1.1.2.18 Mon Mar 22 15:29:23 2004
+++ Zope3/src/transaction/_transaction.py Mon Mar 22 16:38:20 2004
@@ -93,9 +93,19 @@
def myhasattr(obj, attr):
return getattr(obj, attr, _marker) is not _marker
+class Status:
+
+ ACTIVE = "Active"
+ COMMITTING = "Committing"
+ COMMITTED = "Committed"
+ ABORTING = "Aborting"
+ ABORTED = "Aborted"
+ FAILED = "Failed"
+
class Transaction(object):
def __init__(self, synchronizers, manager):
+ self.status = Status.ACTIVE
# List of resource managers, e.g. MultiObjectResourceAdapters.
self._resources = []
self._synchronizers = synchronizers or []
@@ -125,6 +135,8 @@
self._nonsub = {}
def join(self, resource):
+ if self.status != Status.ACTIVE:
+ raise ValueError
self._resources.append(resource)
def register(self, obj):
@@ -164,13 +176,15 @@
for s in self._synchronizers:
s.beforeCompletion()
- # XXX check for the hosed state?
+ if not subtransaction:
+ self.status = Status.COMMITTING
self._commitResources(subtransaction)
if subtransaction:
self._resources = []
else:
+ self.status = Status.COMMITTED
self._manager.free(self)
for s in self._synchronizers:
s.afterCompletion()
More information about the Zope3-Checkins
mailing list