Dolda2000 GitWeb
/
didex.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
eb27469
)
Added post-commit callbacks to transactions.
author
Fredrik Tolf
<fredrik@dolda2000.com>
Fri, 20 Mar 2015 04:21:18 +0000
(
05:21
+0100)
committer
Fredrik Tolf
<fredrik@dolda2000.com>
Fri, 20 Mar 2015 04:21:18 +0000
(
05:21
+0100)
didex/db.py
patch
|
blob
|
blame
|
history
diff --git
a/didex/db.py
b/didex/db.py
index
75aee02
..
316fa02
100644
(file)
--- a/
didex/db.py
+++ b/
didex/db.py
@@
-64,10
+64,18
@@
class txn(object):
def __init__(self, env, flags=bd.DB_TXN_WRITE_NOSYNC):
self.tx = env.txn_begin(None, flags)
self.done = False
def __init__(self, env, flags=bd.DB_TXN_WRITE_NOSYNC):
self.tx = env.txn_begin(None, flags)
self.done = False
+ self.pcommit = set()
def commit(self):
self.done = True
self.tx.commit(0)
def commit(self):
self.done = True
self.tx.commit(0)
+ def run1(list):
+ if len(list) > 0:
+ try:
+ list[0]()
+ finally:
+ run1(list[1:])
+ run1(list(self.pcommit))
def abort(self):
self.done = True
def abort(self):
self.done = True
@@
-81,6
+89,9
@@
class txn(object):
self.abort()
return False
self.abort()
return False
+ def postcommit(self, fun):
+ self.pcommit.add(fun)
+
def txnfun(envfun):
def fxf(fun):
def wrapper(self, *args, tx=None, **kwargs):
def txnfun(envfun):
def fxf(fun):
def wrapper(self, *args, tx=None, **kwargs):