Protocol::Sys::Virt - Abstract LibVirt protocol implementation
This distribution implements the mechanics of the LibVirt protocol. With it, client and server components can be built, although it's unlikely anyone would want to build a LibVirt compatible server.
Rationale behind the creation of this distribution is that it implements a truely asynchronous interface to LibVirt; a property Sys::Virt doesn't have, even when using its event loop integration. After having implemented Sys::Virt::IO::Async, it became apparent that the invocations to the methods in the Sys::Virt
package are blocking regardless. The LibVirt development team explained this is by design. The solution in e.g. Python is to use threading: the underlying protocol and handling on the server is asynchronous, but the API calls are not. Unfortunately, in Perl, threading isn't a viable option: first of all because using Perl threads is highly discouraged, but more so because each thread creates its own Perl interpreter with its own copies of all variables -- a clear distinction with Python, where a single interpreter is used for all threads, sharing variable values.
Write functions which
remote_protocol.x
lists as "not automatically generated"CLOSE
EVENT CALLBACKS (de)registration
Generate reply wrappers to unpack structures into function arguments
Write documentation (lots of it)
Erik Huelsmann