[libvirt] [PATCH 08/34] virObject-ified virDomainEvent

Daniel P. Berrange berrange at redhat.com
Fri Nov 29 17:08:01 UTC 2013


On Fri, Nov 29, 2013 at 04:18:44PM +0100, Cédric Bosdonnat wrote:
> Added a parent class virObjectEvent for future event types
> ---
>  cfg.mk                   |   2 -
>  src/conf/domain_event.c  | 620 +++++++++++++++++++++++++++++++----------------
>  src/conf/domain_event.h  |   5 +-
>  src/libvirt_private.syms |   1 -
>  src/qemu/qemu_driver.c   |   2 +-
>  src/test/test_driver.c   |   4 +-
>  6 files changed, 414 insertions(+), 220 deletions(-)
> 

> diff --git a/src/conf/domain_event.c b/src/conf/domain_event.c
> index fa5c190..ff4f69a 100644
> --- a/src/conf/domain_event.c
> +++ b/src/conf/domain_event.c
> +static void virDomainEventDispose(void *obj)
> +{
> +    virDomainEventPtr event = obj;
> +
> +    VIR_DEBUG("obj=%p", event);
> +
> +    if (!event)
> +        return;

We guarantee that  'obj' != NULL for dispose handlers I believe.

> +
> +    switch (virObjectEventGetEventID(event)) {
> +    case VIR_DOMAIN_EVENT_ID_IO_ERROR_REASON:
> +    case VIR_DOMAIN_EVENT_ID_IO_ERROR:
> +        VIR_FREE(event->data.ioError.srcPath);
> +        VIR_FREE(event->data.ioError.devAlias);
> +        VIR_FREE(event->data.ioError.reason);
> +        break;
> +
> +    case VIR_DOMAIN_EVENT_ID_GRAPHICS:
> +        if (event->data.graphics.local) {
> +            VIR_FREE(event->data.graphics.local->node);
> +            VIR_FREE(event->data.graphics.local->service);
> +            VIR_FREE(event->data.graphics.local);
> +        }
> +        if (event->data.graphics.remote) {
> +            VIR_FREE(event->data.graphics.remote->node);
> +            VIR_FREE(event->data.graphics.remote->service);
> +            VIR_FREE(event->data.graphics.remote);
> +        }
> +        VIR_FREE(event->data.graphics.authScheme);
> +        if (event->data.graphics.subject) {
> +            size_t i;
> +            for (i = 0; i < event->data.graphics.subject->nidentity; i++) {
> +                VIR_FREE(event->data.graphics.subject->identities[i].type);
> +                VIR_FREE(event->data.graphics.subject->identities[i].name);
> +            }
> +            VIR_FREE(event->data.graphics.subject);
> +        }
> +        break;
> +
> +    case VIR_DOMAIN_EVENT_ID_BLOCK_JOB:
> +        VIR_FREE(event->data.blockJob.path);
> +        break;
> +
> +    case VIR_DOMAIN_EVENT_ID_DISK_CHANGE:
> +        VIR_FREE(event->data.diskChange.oldSrcPath);
> +        VIR_FREE(event->data.diskChange.newSrcPath);
> +        VIR_FREE(event->data.diskChange.devAlias);
> +        break;
> +    case VIR_DOMAIN_EVENT_ID_TRAY_CHANGE:
> +        VIR_FREE(event->data.trayChange.devAlias);
> +        break;
> +    case VIR_DOMAIN_EVENT_ID_DEVICE_REMOVED:
> +        VIR_FREE(event->data.deviceRemoved.devAlias);
> +        break;
> +    }
> +
> +    VIR_FREE(event->meta.name);
> +}


Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list