summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/bsddb/test/test_lock.py8
-rw-r--r--Modules/_bsddb.c26
2 files changed, 33 insertions, 1 deletions
diff --git a/Lib/bsddb/test/test_lock.py b/Lib/bsddb/test/test_lock.py
index af10bea..008f89d 100644
--- a/Lib/bsddb/test/test_lock.py
+++ b/Lib/bsddb/test/test_lock.py
@@ -97,7 +97,13 @@ class LockingTestCase(unittest.TestCase):
for t in threads:
t.join()
-
+ def test03_set_timeout(self):
+ # test that the set_timeout call works
+ if hasattr(self.env, 'set_timeout'):
+ self.env.set_timeout(0, db.DB_SET_LOCK_TIMEOUT)
+ self.env.set_timeout(0, db.DB_SET_TXN_TIMEOUT)
+ self.env.set_timeout(123456, db.DB_SET_LOCK_TIMEOUT)
+ self.env.set_timeout(7890123, db.DB_SET_TXN_TIMEOUT)
def theThread(self, sleepTime, lockType):
name = currentThread().getName()
diff --git a/Modules/_bsddb.c b/Modules/_bsddb.c
index 744d854..0df7fa2 100644
--- a/Modules/_bsddb.c
+++ b/Modules/_bsddb.c
@@ -3163,6 +3163,29 @@ DBEnv_set_encrypt(DBEnvObject* self, PyObject* args, PyObject* kwargs)
}
#endif /* DBVER >= 41 */
+#if (DBVER >= 40)
+static PyObject*
+DBEnv_set_timeout(DBEnvObject* self, PyObject* args, PyObject* kwargs)
+{
+ int err;
+ u_int32_t flags=0;
+ u_int32_t timeout = 0;
+ char* kwnames[] = { "timeout", "flags", NULL };
+
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "ii:set_timeout", kwnames,
+ &timeout, &flags)) {
+ return NULL;
+ }
+
+ MYDB_BEGIN_ALLOW_THREADS;
+ err = self->db_env->set_timeout(self->db_env, (db_timeout_t)timeout, flags);
+ MYDB_END_ALLOW_THREADS;
+
+ RETURN_IF_ERR();
+ RETURN_NONE();
+}
+#endif /* DBVER >= 40 */
+
static PyObject*
DBEnv_set_cachesize(DBEnvObject* self, PyObject* args)
{
@@ -3956,6 +3979,9 @@ static PyMethodDef DBEnv_methods[] = {
{"dbrename", (PyCFunction)DBEnv_dbrename, METH_VARARGS|METH_KEYWORDS},
{"set_encrypt", (PyCFunction)DBEnv_set_encrypt, METH_VARARGS|METH_KEYWORDS},
#endif
+#if (DBVER >= 40)
+ {"set_timeout", (PyCFunction)DBEnv_set_timeout, METH_VARARGS|METH_KEYWORDS},
+#endif
{"set_cachesize", (PyCFunction)DBEnv_set_cachesize, METH_VARARGS},
{"set_data_dir", (PyCFunction)DBEnv_set_data_dir, METH_VARARGS},
#if (DBVER >= 32)