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].
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]
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]

I can provide more information, if its not helpful.
Thanks
Arvind