17 #include "../pneum/pneum.h" 24 PyGILState_STATE gstate;
27 gstate = PyGILState_Ensure();
30 #if PY_VERSION_HEX >= 0x03000000 31 result = PyObject_CallFunction(pneum_callback,
"y#", data, len);
33 result = PyObject_CallFunction(pneum_callback,
"s#", data, len);
40 PyGILState_Release(gstate);
47 char * name, * chroot_prefix =
NULL;
51 if (!PyArg_ParseTuple(args,
"sO|s:wrap_connect", &name, &temp, &chroot_prefix))
54 if (!PyCallable_Check(temp)) {
55 PyErr_SetString(PyExc_TypeError,
"parameter must be callable");
60 Py_XDECREF(pneum_callback);
61 pneum_callback = temp;
63 Py_BEGIN_ALLOW_THREADS
66 return PyLong_FromLong(rv);
73 Py_BEGIN_ALLOW_THREADS
76 return PyLong_FromLong(rv);
84 if (!PyArg_ParseTuple(args,
"s#", &data, &len))
86 Py_BEGIN_ALLOW_THREADS
90 return PyLong_FromLong(rv);
101 Py_BEGIN_ALLOW_THREADS
105 if (rv != 0) { Py_RETURN_NONE; }
106 #if PY_VERSION_HEX >= 0x03000000 107 PyObject *ret = Py_BuildValue(
"y#", data, len);
109 PyObject *ret = Py_BuildValue(
"s#", data, len);
111 if (!ret) { Py_RETURN_NONE; }
118 {
"connect",
wrap_connect, METH_VARARGS,
"Connect to the VPP API."},
119 {
"disconnect",
wrap_disconnect, METH_VARARGS,
"Disconnect from the VPP API."},
120 {
"write",
wrap_write, METH_VARARGS,
"Write data to the VPP API."},
121 {
"read",
wrap_read, METH_VARARGS,
"Read data from the VPP API."},
125 #if PY_VERSION_HEX >= 0x03000000 127 PyInit_vpp_api (
void)
133 #if PY_VERSION_HEX >= 0x03000000 134 static struct PyModuleDef vpp_api_module = {
135 #if PY_VERSION_HEX >= 0x03020000 136 PyModuleDef_HEAD_INIT,
139 PyObject_HEAD_INIT(NULL)
157 if (!PyEval_ThreadsInitialized()) {
158 PyEval_InitThreads();
161 #if PY_VERSION_HEX >= 0x03000000 162 return PyModule_Create(&vpp_api_module);
164 Py_InitModule((
char *)
"vpp_api", vpp_api_Methods);
static PyObject * wrap_disconnect(PyObject *self, PyObject *args)
int pneum_read(char **p, int *l)
int pneum_connect(char *name, char *chroot_prefix)
int pneum_disconnect(void)
void vl_msg_api_free(void *)
static PyObject * wrap_write(PyObject *self, PyObject *args)
static PyObject * wrap_read(PyObject *self, PyObject *args)
static PyMethodDef vpp_api_Methods[]
static PyObject * pneum_callback
int pneum_write(char *p, int l)
int wrap_pneum_callback(char *data, int len)
static PyObject * wrap_connect(PyObject *self, PyObject *args)