mirror of
https://gitlab.com/libvirt/libvirt-python.git
synced 2024-10-26 16:25:10 +03:00
Add public API definition for data stream handling
* include/libvirt/libvirt.h.in: Public API contract for virStreamPtr object * src/libvirt_public.syms: Export data stream APIs * src/libvirt_private.syms: Export internal helper APIs * src/libvirt.c: Data stream API driver dispatch * src/datatypes.h, src/datatypes.c: Internal helpers for virStreamPtr object * src/driver.h: Define internal driver API for streams * .x-sc_avoid_write: Ignore src/libvirt.c because it trips up on comments including write() * python/Makefile.am: Add libvirt-override-virStream.py * python/generator.py: Add rules for virStreamPtr class * python/typewrappers.h, python/typewrappers.c: Wrapper for virStreamPtr * docs/libvirt-api.xml, docs/libvirt-refs.xml: Regenerate with new APIs
This commit is contained in:
parent
4588a49e12
commit
f444dc0597
@ -13,7 +13,9 @@ DOCS_DIR = $(datadir)/doc/libvirt-python-$(LIBVIRT_VERSION)
|
|||||||
|
|
||||||
DOCS = ${srcdir}/TODO
|
DOCS = ${srcdir}/TODO
|
||||||
|
|
||||||
CLASSES_EXTRA = libvirt-override-virConnect.py
|
CLASSES_EXTRA = \
|
||||||
|
libvirt-override-virConnect.py \
|
||||||
|
libvirt-override-virStream.py
|
||||||
|
|
||||||
EXTRA_DIST = \
|
EXTRA_DIST = \
|
||||||
generator.py \
|
generator.py \
|
||||||
|
32
generator.py
32
generator.py
@ -282,6 +282,11 @@ py_types = {
|
|||||||
'const virSecretPtr': ('O', "virSecret", "virSecretPtr", "virSecretPtr"),
|
'const virSecretPtr': ('O', "virSecret", "virSecretPtr", "virSecretPtr"),
|
||||||
'virSecret *': ('O', "virSecret", "virSecretPtr", "virSecretPtr"),
|
'virSecret *': ('O', "virSecret", "virSecretPtr", "virSecretPtr"),
|
||||||
'const virSecret *': ('O', "virSecret", "virSecretPtr", "virSecretPtr"),
|
'const virSecret *': ('O', "virSecret", "virSecretPtr", "virSecretPtr"),
|
||||||
|
|
||||||
|
'virStreamPtr': ('O', "virStream", "virStreamPtr", "virStreamPtr"),
|
||||||
|
'const virStreamPtr': ('O', "virStream", "virStreamPtr", "virStreamPtr"),
|
||||||
|
'virStream *': ('O', "virStream", "virStreamPtr", "virStreamPtr"),
|
||||||
|
'const virStream *': ('O', "virStream", "virStreamPtr", "virStreamPtr"),
|
||||||
}
|
}
|
||||||
|
|
||||||
py_return_types = {
|
py_return_types = {
|
||||||
@ -338,6 +343,8 @@ skip_impl = (
|
|||||||
'virSecretGetUUID',
|
'virSecretGetUUID',
|
||||||
'virSecretGetUUIDString',
|
'virSecretGetUUIDString',
|
||||||
'virSecretLookupByUUID',
|
'virSecretLookupByUUID',
|
||||||
|
'virStreamRecv',
|
||||||
|
'virStreamSend',
|
||||||
'virStoragePoolGetUUID',
|
'virStoragePoolGetUUID',
|
||||||
'virStoragePoolGetUUIDString',
|
'virStoragePoolGetUUIDString',
|
||||||
'virStoragePoolLookupByUUID',
|
'virStoragePoolLookupByUUID',
|
||||||
@ -373,6 +380,11 @@ skip_function = (
|
|||||||
'virConnectDomainEventDeregister', # overridden in virConnect.py
|
'virConnectDomainEventDeregister', # overridden in virConnect.py
|
||||||
'virSaveLastError', # We have our own python error wrapper
|
'virSaveLastError', # We have our own python error wrapper
|
||||||
'virFreeError', # Only needed if we use virSaveLastError
|
'virFreeError', # Only needed if we use virSaveLastError
|
||||||
|
'virStreamEventAddCallback',
|
||||||
|
'virStreamRecvAll',
|
||||||
|
'virStreamSendAll',
|
||||||
|
'virStreamRef',
|
||||||
|
'virStreamFree',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -643,6 +655,8 @@ classes_type = {
|
|||||||
"virNodeDevice *": ("._o", "virNodeDevice(self, _obj=%s)", "virNodeDevice"),
|
"virNodeDevice *": ("._o", "virNodeDevice(self, _obj=%s)", "virNodeDevice"),
|
||||||
"virSecretPtr": ("._o", "virSecret(self, _obj=%s)", "virSecret"),
|
"virSecretPtr": ("._o", "virSecret(self, _obj=%s)", "virSecret"),
|
||||||
"virSecret *": ("._o", "virSecret(self, _obj=%s)", "virSecret"),
|
"virSecret *": ("._o", "virSecret(self, _obj=%s)", "virSecret"),
|
||||||
|
"virStreamPtr": ("._o", "virStream(self, _obj=%s)", "virStream"),
|
||||||
|
"virStream *": ("._o", "virStream(self, _obj=%s)", "virStream"),
|
||||||
"virConnectPtr": ("._o", "virConnect(_obj=%s)", "virConnect"),
|
"virConnectPtr": ("._o", "virConnect(_obj=%s)", "virConnect"),
|
||||||
"virConnect *": ("._o", "virConnect(_obj=%s)", "virConnect"),
|
"virConnect *": ("._o", "virConnect(_obj=%s)", "virConnect"),
|
||||||
}
|
}
|
||||||
@ -652,7 +666,8 @@ converter_type = {
|
|||||||
|
|
||||||
primary_classes = ["virDomain", "virNetwork", "virInterface",
|
primary_classes = ["virDomain", "virNetwork", "virInterface",
|
||||||
"virStoragePool", "virStorageVol",
|
"virStoragePool", "virStorageVol",
|
||||||
"virConnect", "virNodeDevice", "virSecret" ]
|
"virConnect", "virNodeDevice", "virSecret",
|
||||||
|
"virStream"]
|
||||||
|
|
||||||
classes_ancestor = {
|
classes_ancestor = {
|
||||||
}
|
}
|
||||||
@ -663,7 +678,9 @@ classes_destructors = {
|
|||||||
"virStoragePool": "virStoragePoolFree",
|
"virStoragePool": "virStoragePoolFree",
|
||||||
"virStorageVol": "virStorageVolFree",
|
"virStorageVol": "virStorageVolFree",
|
||||||
"virNodeDevice" : "virNodeDeviceFree",
|
"virNodeDevice" : "virNodeDeviceFree",
|
||||||
"virSecret": "virSecretFree"
|
"virSecret": "virSecretFree",
|
||||||
|
# We hand-craft __del__ for this one
|
||||||
|
#"virStream": "virStreamFree",
|
||||||
}
|
}
|
||||||
|
|
||||||
functions_noexcept = {
|
functions_noexcept = {
|
||||||
@ -782,6 +799,11 @@ def nameFixup(name, classe, type, file):
|
|||||||
elif name[0:9] == 'virSecret':
|
elif name[0:9] == 'virSecret':
|
||||||
func = name[9:]
|
func = name[9:]
|
||||||
func = string.lower(func[0:1]) + func[1:]
|
func = string.lower(func[0:1]) + func[1:]
|
||||||
|
elif name[0:12] == 'virStreamNew':
|
||||||
|
func = "newStream"
|
||||||
|
elif name[0:9] == 'virStream':
|
||||||
|
func = name[9:]
|
||||||
|
func = string.lower(func[0:1]) + func[1:]
|
||||||
elif name[0:17] == "virStoragePoolGet":
|
elif name[0:17] == "virStoragePoolGet":
|
||||||
func = name[17:]
|
func = name[17:]
|
||||||
func = string.lower(func[0:1]) + func[1:]
|
func = string.lower(func[0:1]) + func[1:]
|
||||||
@ -1059,7 +1081,8 @@ def buildWrappers():
|
|||||||
classes_ancestor[classname]))
|
classes_ancestor[classname]))
|
||||||
else:
|
else:
|
||||||
classes.write("class %s:\n" % (classname))
|
classes.write("class %s:\n" % (classname))
|
||||||
if classname in [ "virDomain", "virNetwork", "virInterface", "virStoragePool", "virStorageVol", "virNodeDevice", "virSecret" ]:
|
if classname in [ "virDomain", "virNetwork", "virInterface", "virStoragePool",
|
||||||
|
"virStorageVol", "virNodeDevice", "virSecret","virStream" ]:
|
||||||
classes.write(" def __init__(self, conn, _obj=None):\n")
|
classes.write(" def __init__(self, conn, _obj=None):\n")
|
||||||
else:
|
else:
|
||||||
classes.write(" def __init__(self, _obj=None):\n")
|
classes.write(" def __init__(self, _obj=None):\n")
|
||||||
@ -1067,7 +1090,8 @@ def buildWrappers():
|
|||||||
list = reference_keepers[classname]
|
list = reference_keepers[classname]
|
||||||
for ref in list:
|
for ref in list:
|
||||||
classes.write(" self.%s = None\n" % ref[1])
|
classes.write(" self.%s = None\n" % ref[1])
|
||||||
if classname in [ "virDomain", "virNetwork", "virInterface", "virNodeDevice", "virSecret" ]:
|
if classname in [ "virDomain", "virNetwork", "virInterface",
|
||||||
|
"virNodeDevice", "virSecret", "virStream" ]:
|
||||||
classes.write(" self._conn = conn\n")
|
classes.write(" self._conn = conn\n")
|
||||||
elif classname in [ "virStorageVol", "virStoragePool" ]:
|
elif classname in [ "virStorageVol", "virStoragePool" ]:
|
||||||
classes.write(" self._conn = conn\n" + \
|
classes.write(" self._conn = conn\n" + \
|
||||||
|
20
libvirt-override-virStream.py
Normal file
20
libvirt-override-virStream.py
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
def __del__(self):
|
||||||
|
try:
|
||||||
|
if self.cb:
|
||||||
|
libvirtmod.virStreamEventRemoveCallback(self._o)
|
||||||
|
except AttributeError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
if self._o != None:
|
||||||
|
libvirtmod.virStreamFree(self._o)
|
||||||
|
self._o = None
|
||||||
|
|
||||||
|
def eventAddCallback(self, cb, opaque):
|
||||||
|
""" """
|
||||||
|
try:
|
||||||
|
self.cb = cb
|
||||||
|
self.opaque = opaque
|
||||||
|
ret = libvirtmod.virStreamEventAddCallback(self._o, self)
|
||||||
|
if ret == -1: raise libvirtError ('virStreamEventAddCallback() failed', conn=self._conn)
|
||||||
|
except AttributeError:
|
||||||
|
pass
|
@ -206,6 +206,19 @@ libvirt_virSecretPtrWrap(virSecretPtr node)
|
|||||||
return (ret);
|
return (ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PyObject *
|
||||||
|
libvirt_virStreamPtrWrap(virStreamPtr node)
|
||||||
|
{
|
||||||
|
PyObject *ret;
|
||||||
|
|
||||||
|
if (node == NULL) {
|
||||||
|
Py_INCREF(Py_None);
|
||||||
|
return Py_None;
|
||||||
|
}
|
||||||
|
ret = PyCObject_FromVoidPtrAndDesc(node, (char *) "virStreamPtr", NULL);
|
||||||
|
return (ret);
|
||||||
|
}
|
||||||
|
|
||||||
PyObject *
|
PyObject *
|
||||||
libvirt_virEventHandleCallbackWrap(virEventHandleCallback node)
|
libvirt_virEventHandleCallbackWrap(virEventHandleCallback node)
|
||||||
{
|
{
|
||||||
|
@ -92,6 +92,15 @@ typedef struct {
|
|||||||
} PyvirSecret_Object;
|
} PyvirSecret_Object;
|
||||||
|
|
||||||
|
|
||||||
|
#define PyvirStream_Get(v) (((v) == Py_None) ? NULL : \
|
||||||
|
(((PyvirStream_Object *)(v))->obj))
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
PyObject_HEAD
|
||||||
|
virStreamPtr obj;
|
||||||
|
} PyvirStream_Object;
|
||||||
|
|
||||||
|
|
||||||
#define PyvirEventHandleCallback_Get(v) (((v) == Py_None) ? NULL : \
|
#define PyvirEventHandleCallback_Get(v) (((v) == Py_None) ? NULL : \
|
||||||
(((PyvirEventHandleCallback_Object *)(v))->obj))
|
(((PyvirEventHandleCallback_Object *)(v))->obj))
|
||||||
|
|
||||||
@ -144,6 +153,7 @@ PyObject * libvirt_virFreeCallbackWrap(virFreeCallback node);
|
|||||||
PyObject * libvirt_virVoidPtrWrap(void* node);
|
PyObject * libvirt_virVoidPtrWrap(void* node);
|
||||||
PyObject * libvirt_virNodeDevicePtrWrap(virNodeDevicePtr node);
|
PyObject * libvirt_virNodeDevicePtrWrap(virNodeDevicePtr node);
|
||||||
PyObject * libvirt_virSecretPtrWrap(virSecretPtr node);
|
PyObject * libvirt_virSecretPtrWrap(virSecretPtr node);
|
||||||
|
PyObject * libvirt_virStreamPtrWrap(virStreamPtr 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):
|
||||||
|
Loading…
Reference in New Issue
Block a user