
On 05/14/2013 06:17 PM, arvind viswanathan wrote:
Hi, I have a VMM application using a homegrown client for communicating with hypervisor. I am planning to migrate to libvirt because of the blocking nature of the calls. After going over the architecture, I would like to have a few doubts clarified 1) Should my application be necessarily multi-threaded in order to make use of the non-blocking calls in libvirt. [Are overlapping methods mainly used by multithreaded clients].
That's up to you; but virsh is our canonical example, and it is multi-threaded in order to allow Ctrl-C to interrupt long-running tasks cleanly.
2) I was wondering if there was any way to provide a callback along with the methods to achieve non-blocking.[My application has event library so it can receive events]
Yes, the event API requires that you register a callback to be invoked any time you want to receive notifications of events. You don't have to use events, but if you do, the examples/domain-events/ directory in libvirt.git shows how to use them in both C and Python bindings.
3) Is the libvirt RPC client multi-threaded. [i.e., does it internally use multiple threads to dispatch requests to server and return response to the application]
Yes, and the number of worker threads is configured by /etc/libvirt/libvirtd.conf max_workers. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org