[libvirt] [PATCH 01/13] Introduce a new public API for domain events

Daniel P. Berrange berrange at redhat.com
Fri Mar 19 17:11:13 UTC 2010


On Fri, Mar 19, 2010 at 11:06:40AM -0600, Eric Blake wrote:
> On 03/19/2010 09:38 AM, Daniel P. Berrange wrote:
> > Since different event types can received different data in the callback,
> > the API is defined with a generic callback. Specific events will each
> > have a custom signature for their callback. Thus when registering an
> > event it is neccessary to cast the callback to the generic signature
> > 
> >  
> > +/* A generic callback definition. Specific events usually have a customization
> > + * with extra parameters */
> > +typedef void (*virConnectDomainEventGenericCallback)(virConnectPtr conn,
> > +                                                     virDomainPtr dom,
> > +                                                     void *opaque);
> 
> Should the callback be allowed to return anything, as void*?  For
> example, I've seen some programming paradigms where you can write a
> generic iterator that marches through callbacks for each item in a set,
> allowing an early abort of the iteration if any of the callbacks return
> a non-NULL value (useful for both finding the first element that matches
> a given criteria, and for gracefully aborting operations on first failure).

If these callbacks where synchronous with the operation causing them,
then I'd agree we need a return value. All the domain events though
are reporting something that has already happened, asychronously, so
there's nothing that a callback could stop/abort for this.

Regards,
Daniel
-- 
|: Red Hat, Engineering, London    -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://deltacloud.org :|
|: http://autobuild.org        -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-   F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|




More information about the libvir-list mailing list