1
0
mirror of https://gitlab.com/libvirt/libvirt-python.git synced 2025-08-12 17:49:25 +03:00

Add a virFreeCallback to event loop APIs

This commit is contained in:
Daniel P. Berrange
2008-11-19 16:24:01 +00:00
parent 16ba890989
commit 1235fc187b
3 changed files with 34 additions and 6 deletions

View File

@ -1704,12 +1704,16 @@ static PyObject *removeTimeoutObj = NULL;
static int static int
libvirt_virEventAddHandleFunc (int fd ATTRIBUTE_UNUSED, int event ATTRIBUTE_UNUSED, libvirt_virEventAddHandleFunc (int fd,
virEventHandleCallback cb, void *opaque) int event,
virEventHandleCallback cb,
void *opaque,
virFreeCallback ff)
{ {
PyObject *result = NULL; PyObject *result = NULL;
PyObject *python_cb; PyObject *python_cb;
PyObject *cb_obj; PyObject *cb_obj;
PyObject *ff_obj;
PyObject *opaque_obj; PyObject *opaque_obj;
PyObject *cb_args; PyObject *cb_args;
PyObject *pyobj_args; PyObject *pyobj_args;
@ -1730,11 +1734,13 @@ libvirt_virEventAddHandleFunc (int fd ATTRIBUTE_UNUSED, int event ATTRIBUTE_UNU
/* create tuple for cb */ /* create tuple for cb */
cb_obj = libvirt_virEventHandleCallbackWrap(cb); cb_obj = libvirt_virEventHandleCallbackWrap(cb);
ff_obj = libvirt_virFreeCallbackWrap(ff);
opaque_obj = libvirt_virVoidPtrWrap(opaque); opaque_obj = libvirt_virVoidPtrWrap(opaque);
cb_args = PyTuple_New(2); cb_args = PyTuple_New(3);
PyTuple_SetItem(cb_args, 0, cb_obj); PyTuple_SetItem(cb_args, 0, cb_obj);
PyTuple_SetItem(cb_args, 1, opaque_obj); PyTuple_SetItem(cb_args, 1, opaque_obj);
PyTuple_SetItem(cb_args, 2, ff_obj);
pyobj_args = PyTuple_New(4); pyobj_args = PyTuple_New(4);
PyTuple_SetItem(pyobj_args, 0, libvirt_intWrap(fd)); PyTuple_SetItem(pyobj_args, 0, libvirt_intWrap(fd));
@ -1799,14 +1805,17 @@ libvirt_virEventRemoveHandleFunc(int fd)
} }
static int static int
libvirt_virEventAddTimeoutFunc(int timeout, virEventTimeoutCallback cb, libvirt_virEventAddTimeoutFunc(int timeout,
void *opaque) virEventTimeoutCallback cb,
void *opaque,
virFreeCallback ff)
{ {
PyObject *result = NULL; PyObject *result = NULL;
PyObject *python_cb; PyObject *python_cb;
PyObject *cb_obj; PyObject *cb_obj;
PyObject *ff_obj;
PyObject *opaque_obj; PyObject *opaque_obj;
PyObject *cb_args; PyObject *cb_args;
PyObject *pyobj_args; PyObject *pyobj_args;
@ -1827,11 +1836,13 @@ libvirt_virEventAddTimeoutFunc(int timeout, virEventTimeoutCallback cb,
/* create tuple for cb */ /* create tuple for cb */
cb_obj = libvirt_virEventTimeoutCallbackWrap(cb); cb_obj = libvirt_virEventTimeoutCallbackWrap(cb);
ff_obj = libvirt_virFreeCallbackWrap(ff);
opaque_obj = libvirt_virVoidPtrWrap(opaque); opaque_obj = libvirt_virVoidPtrWrap(opaque);
cb_args = PyTuple_New(2); cb_args = PyTuple_New(3);
PyTuple_SetItem(cb_args, 0, cb_obj); PyTuple_SetItem(cb_args, 0, cb_obj);
PyTuple_SetItem(cb_args, 1, opaque_obj); PyTuple_SetItem(cb_args, 1, opaque_obj);
PyTuple_SetItem(cb_args, 2, ff_obj);
pyobj_args = PyTuple_New(3); pyobj_args = PyTuple_New(3);

View File

@ -103,6 +103,7 @@ PyObject * libvirt_virStoragePoolPtrWrap(virStoragePoolPtr node);
PyObject * libvirt_virStorageVolPtrWrap(virStorageVolPtr node); PyObject * libvirt_virStorageVolPtrWrap(virStorageVolPtr node);
PyObject * libvirt_virEventHandleCallbackWrap(virEventHandleCallback node); PyObject * libvirt_virEventHandleCallbackWrap(virEventHandleCallback node);
PyObject * libvirt_virEventTimeoutCallbackWrap(virEventTimeoutCallback node); PyObject * libvirt_virEventTimeoutCallbackWrap(virEventTimeoutCallback node);
PyObject * libvirt_virFreeCallbackWrap(virFreeCallback node);
PyObject * libvirt_virVoidPtrWrap(void* node); PyObject * libvirt_virVoidPtrWrap(void* node);
/* Provide simple macro statement wrappers (adapted from GLib, in turn from Perl): /* Provide simple macro statement wrappers (adapted from GLib, in turn from Perl):

16
types.c
View File

@ -195,6 +195,22 @@ libvirt_virEventTimeoutCallbackWrap(virEventTimeoutCallback node)
return (ret); return (ret);
} }
PyObject *
libvirt_virFreeCallbackWrap(virFreeCallback node)
{
PyObject *ret;
if (node == NULL) {
printf("%s: WARNING - Wrapping None\n", __FUNCTION__);
Py_INCREF(Py_None);
return (Py_None);
}
ret =
PyCObject_FromVoidPtrAndDesc((void *) node, (char *) "virFreeCallback",
NULL);
return (ret);
}
PyObject * PyObject *
libvirt_virVoidPtrWrap(void* node) libvirt_virVoidPtrWrap(void* node)
{ {