[libvirt] [PATCH 12/14] Switch over to passing a callback table to QEMU monitor

Matthias Bolte matthias.bolte at googlemail.com
Wed Dec 2 23:51:36 UTC 2009


2009/11/26 Daniel P. Berrange <berrange at redhat.com>:
> With addition of events there will be alot of callbacks.
> To avoid having to add many APIs to register callbacks,
> provide them all at once in a big table
>
> * src/qemu/qemu_driver.c: Pass in a callback table to QEMU
>  monitor code
> * src/qemu/qemu_monitor.c, src/qemu/qemu_monitor.h Replace
>  the EOF and disk secret callbacks with a callback table
> ---

[...]

> diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h
> index 0d9e315..7aa6ee5 100644
> --- a/src/qemu/qemu_monitor.h
> +++ b/src/qemu/qemu_monitor.h
> @@ -59,21 +59,25 @@ struct _qemuMonitorMessage {
>     void *passwordOpaque;
>  };
>
> -typedef void (*qemuMonitorEOFNotify)(qemuMonitorPtr mon,
> -                                     virDomainObjPtr vm,
> -                                     int withError);
> -
> -/* XXX we'd really like to avoid virCOnnectPtr here
> - * It is required so the callback can find the active
> - * secret driver. Need to change this to work like the
> - * security drivers do, to avoid this
> - */
> -typedef int (*qemuMonitorDiskSecretLookup)(qemuMonitorPtr mon,
> -                                           virConnectPtr conn,
> -                                           virDomainObjPtr vm,
> -                                           const char *path,
> -                                           char **secret,
> -                                           size_t *secretLen);
> +typedef struct _qemuMonitorCallbacks qemuMonitorCallbacks;
> +typedef qemuMonitorCallbacks *qemuMonitorCallbacksPtr;
> +struct _qemuMonitorCallbacks {
> +    void (*eofNotify)(qemuMonitorPtr mon,
> +                      virDomainObjPtr vm,
> +                      int withError);
> +    /* XXX we'd really like to avoid virCOnnectPtr here

s/virCOnnectPtr/virConnectPtr/

> +     * It is required so the callback can find the active
> +     * secret driver. Need to change this to work like the
> +     * security drivers do, to avoid this
> +     */
> +    int (*diskSecretLookup)(qemuMonitorPtr mon,
> +                            virConnectPtr conn,
> +                            virDomainObjPtr vm,
> +                            const char *path,
> +                            char **secret,
> +                            size_t *secretLen);
> +};
> +
>
>  char *qemuMonitorEscapeArg(const char *in);
>  char *qemuMonitorEscapeShell(const char *in);

ACK.

Matthias




More information about the libvir-list mailing list