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). > + > +/** > + * virConnectDomainEventRegister: > + * @conn: pointer to the connection > + * @dom: pointer to the domain > + * @eventID: the event type to receive > + * @cb: callback to the function handling domain events > + * @opaque: opaque data to pass on to the callback > + * @freecb: optional function to deallocate opaque when not used anymore > + * > + * Adds a callback to receive notifications of arbitrary domain events > + * occurring on a domain. > + * > + * If dom is NULL, then events will be monitored for any domain. If dom > + * is non-NULL, then only the specific domain will be monitored > + * > + * Most types of event have a callback providing a custom set of parameters > + * for the event. When registering an event, it is thus neccessary to use s/neccessary/necessary/ -- Eric Blake eblake@xxxxxxxxxx +1-801-349-2682 Libvirt virtualization library http://libvirt.org
Attachment:
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list