
I had some private discussions with a developer who wants to start using libvirt, but requires asynch notifications of domain start/stop (and other stuff, but this will do for the moment). Right now he's using XenStore watches. The alternative of polling didn't look very appealing for him. A rough API for this might look like this: typedef int virEventHandle; /* Register a callback to catch domain start events. */ virEventHandle virEventDomainStart (virConnectPtr, void (*f) (virConnectPtr, int domid)); /* Register a callback to catch domain stop events. */ virEventHandle virEventDomainStop (virConnectPtr, void (*f) (virConnectPtr, int domid)); /* Unregister any type of callback. */ int virEventCancel (virConnectPtr, virEventHandle handle); Implementation -------------- In the Xen case, we can use XenStore watches[1]. Callbacks from XenStore can be translated directly into event callbacks. In the qemu case, the daemon knows when the qemu instances that it manages come and go. In the qemu/remote case, asynch notifications are nominally supported by the protocol, but I haven't really looked at all the implications. Seems like we'd need to use MSG_OOB to signal the client process, and translate the SIGURG signal received into a callback. This is all tricky and Unix-specific though so if you have any better ideas ... We would also need to avoid mixing ordinary request/response with the notifications, which OOB takes care of. Rich. [1] http://wiki.xensource.com/xenwiki/XenBusDriver -- Emerging Technologies, Red Hat - http://et.redhat.com/~rjones/ Registered Address: Red Hat UK Ltd, Amberley Place, 107-111 Peascod Street, Windsor, Berkshire, SL4 1TE, United Kingdom. Registered in England and Wales under Company Registration No. 03798903