]> granicus.if.org Git - python/commitdiff
Adds support for the DBEnv->set_timeout() method.
authorGregory P. Smith <greg@mad-scientist.com>
Thu, 27 Mar 2003 17:23:29 +0000 (17:23 +0000)
committerGregory P. Smith <greg@mad-scientist.com>
Thu, 27 Mar 2003 17:23:29 +0000 (17:23 +0000)
Lib/bsddb/test/test_lock.py
Modules/_bsddb.c

index af10beab0806b6462031120253d97bd744fc11f9..008f89da5f8a384fbc8bfa2c8b7eb79b4ae90cfb 100644 (file)
@@ -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()
index 744d85451805e8afbfe21297ad69a68e84e70438..0df7fa2b5fb50b7cb26b7ff720e8f7a04862be43 100644 (file)
@@ -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)
 {
@@ -3955,6 +3978,9 @@ static PyMethodDef DBEnv_methods[] = {
     {"dbremove",        (PyCFunction)DBEnv_dbremove,         METH_VARARGS|METH_KEYWORDS},
     {"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},