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 :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list