Alien-Libjio
view release on metacpan or search on metacpan
libjio/bindings/python/libjio.c view on Meta::CPAN
return PyErr_SetFromErrno(PyExc_IOError);
return PyLong_FromLongLong(rv);
}
/* jsync */
PyDoc_STRVAR(jf_jsync__doc,
"jsync()\n\
\n\
Used with lingering transactions, see the library documentation for more\n\
detailed information.\n\
It's a wrapper to jsync().\n");
static PyObject *jf_jsync(jfile_object *fp, PyObject *args)
{
long rv;
if (!PyArg_ParseTuple(args, ":jsync"))
return NULL;
Py_BEGIN_ALLOW_THREADS
rv = jsync(fp->fs);
Py_END_ALLOW_THREADS
if (rv < 0)
return PyErr_SetFromErrno(PyExc_IOError);
return PyLong_FromLong(rv);
}
/* jmove_journal */
PyDoc_STRVAR(jf_jmove_journal__doc,
"jmove_journal(newpath)\n\
\n\
Moves the journal directory to the new path; note that there MUST NOT BE\n\
anything else operating on the file.\n\
It's a wrapper to jmove_journal().\n");
static PyObject *jf_jmove_journal(jfile_object *fp, PyObject *args)
{
long rv;
char *newpath;
if (!PyArg_ParseTuple(args, "s:jmove_journal", &newpath))
return NULL;
Py_BEGIN_ALLOW_THREADS
rv = jmove_journal(fp->fs, newpath);
Py_END_ALLOW_THREADS
if (rv != 0)
return PyErr_SetFromErrno(PyExc_IOError);
return PyLong_FromLong(rv);
}
/* jfs_autosync_start() */
PyDoc_STRVAR(jf_autosync_start__doc,
"autosync_start(max_sec, max_bytes)\n\
\n\
Starts the automatic sync thread (only useful when using lingering\n\
transactions).\n");
static PyObject *jf_autosync_start(jfile_object *fp, PyObject *args)
{
int rv;
unsigned int max_sec, max_bytes;
if (!PyArg_ParseTuple(args, "II:autosync_start", &max_sec,
&max_bytes))
return NULL;
Py_BEGIN_ALLOW_THREADS
rv = jfs_autosync_start(fp->fs, max_sec, max_bytes);
Py_END_ALLOW_THREADS
if (rv != 0)
return PyErr_SetFromErrno(PyExc_IOError);
return PyLong_FromLong(rv);
}
/* jfs_autosync_stop() */
PyDoc_STRVAR(jf_autosync_stop__doc,
"autosync_stop()\n\
\n\
Stops the automatic sync thread started by autosync_start()\n");
static PyObject *jf_autosync_stop(jfile_object *fp, PyObject *args)
{
int rv;
if (!PyArg_ParseTuple(args, ":autosync_stop"))
return NULL;
Py_BEGIN_ALLOW_THREADS
rv = jfs_autosync_stop(fp->fs);
Py_END_ALLOW_THREADS
if (rv != 0)
return PyErr_SetFromErrno(PyExc_IOError);
return PyLong_FromLong(rv);
}
/* new_trans */
PyDoc_STRVAR(jf_new_trans__doc,
"new_trans()\n\
\n\
Returns an object representing a new empty transaction.\n\
It's a wrapper to jtrans_new().\n");
static PyObject *jf_new_trans(jfile_object *fp, PyObject *args)
{
jtrans_object *tp;
unsigned int flags = 0;
if (!PyArg_ParseTuple(args, "|I:new_trans", &flags))
return NULL;
#ifdef PYTHON3
tp = (jtrans_object *) jtrans_type.tp_alloc(&jtrans_type, 0);
#elif PYTHON2
tp = PyObject_New(jtrans_object, &jtrans_type);
#endif
if (tp == NULL)
return NULL;
tp->ts = jtrans_new(fp->fs, flags);
if(tp->ts == NULL) {
return PyErr_NoMemory();
}
/* increment the reference count, it's decremented on deletion */
tp->jfile = fp;
Py_INCREF(fp);
tp->views = NULL;
tp->nviews = 0;
return (PyObject *) tp;
}
/* method table */
static PyMethodDef jfile_methods[] = {
{ "fileno", (PyCFunction) jf_fileno, METH_VARARGS, jf_fileno__doc },
{ "read", (PyCFunction) jf_read, METH_VARARGS, jf_read__doc },
( run in 1.811 second using v1.01-cache-2.11-cpan-ceb78f64989 )