From 1778fd02eec6e64737167c46173c0c76c85cc4d9 Mon Sep 17 00:00:00 2001 From: Kirill Smelkov Date: Sun, 19 Sep 2010 09:34:33 -0700 Subject: [PATCH] pytdb: Add support for tdb_enable_seqnum, tdb_get_seqnum and tdb_increment_seqnum_nonblock Cc: 597386@bugs.debian.org Signed-off-by: Kirill Smelkov Signed-off-by: Jelmer Vernooij --- lib/tdb/pytdb.c | 23 +++++++++++++++++++++++ lib/tdb/python/tests/simple.py | 7 +++++++ 2 files changed, 30 insertions(+) diff --git a/lib/tdb/pytdb.c b/lib/tdb/pytdb.c index e50615f4..303c7ffd 100644 --- a/lib/tdb/pytdb.c +++ b/lib/tdb/pytdb.c @@ -332,6 +332,18 @@ static PyObject *obj_clear(PyTdbObject *self) Py_RETURN_NONE; } +static PyObject *obj_enable_seqnum(PyTdbObject *self) +{ + tdb_enable_seqnum(self->ctx); + Py_RETURN_NONE; +} + +static PyObject *obj_increment_seqnum_nonblock(PyTdbObject *self) +{ + tdb_increment_seqnum_nonblock(self->ctx); + Py_RETURN_NONE; +} + static PyMethodDef tdb_object_methods[] = { { "transaction_cancel", (PyCFunction)obj_transaction_cancel, METH_NOARGS, "S.transaction_cancel() -> None\n" @@ -367,6 +379,10 @@ static PyMethodDef tdb_object_methods[] = { { "iterkeys", (PyCFunction)tdb_object_iter, METH_NOARGS, "S.iterkeys() -> iterator" }, { "clear", (PyCFunction)obj_clear, METH_NOARGS, "S.clear() -> None\n" "Wipe the entire database." }, + { "enable_seqnum", (PyCFunction)obj_enable_seqnum, METH_NOARGS, + "S.enable_seqnum() -> None" }, + { "increment_seqnum_nonblock", (PyCFunction)obj_increment_seqnum_nonblock, METH_NOARGS, + "S.increment_seqnum_nonblock() -> None" }, { NULL } }; @@ -398,12 +414,19 @@ static PyObject *obj_get_filename(PyTdbObject *self, void *closure) return PyString_FromString(tdb_name(self->ctx)); } +static PyObject *obj_get_seqnum(PyTdbObject *self, void *closure) +{ + return PyInt_FromLong(tdb_get_seqnum(self->ctx)); +} + + static PyGetSetDef tdb_object_getsetters[] = { { (char *)"hash_size", (getter)obj_get_hash_size, NULL, NULL }, { (char *)"map_size", (getter)obj_get_map_size, NULL, NULL }, { (char *)"flags", (getter)obj_get_flags, NULL, NULL }, { (char *)"max_dead", NULL, (setter)obj_set_max_dead, NULL }, { (char *)"filename", (getter)obj_get_filename, NULL, (char *)"The filename of this TDB file."}, + { (char *)"seqnum", (getter)obj_get_seqnum, NULL, NULL }, { NULL } }; diff --git a/lib/tdb/python/tests/simple.py b/lib/tdb/python/tests/simple.py index 2b72fff7..3dc2f033 100644 --- a/lib/tdb/python/tests/simple.py +++ b/lib/tdb/python/tests/simple.py @@ -130,6 +130,13 @@ class SimpleTdbTests(TestCase): self.tdb.clear() self.assertEquals(0, len(list(self.tdb))) + def test_seqnum(self): + self.tdb.enable_seqnum() + seq1 = self.tdb.seqnum + self.tdb.increment_seqnum_nonblock() + seq2 = self.tdb.seqnum + self.assertEquals(seq2-seq1, 1) + def test_len(self): self.assertEquals(0, len(list(self.tdb))) self.tdb["entry"] = "value" -- 2.34.1