![]() |
![]() |
![]() |
![]() |
The libvirt API has the ability to provide applications with asynchronous notifications of interesting events. To enable this functionality though, applications must provide libvirt with an event loop implementation. The libvirt-glib API provides such an implementation, which naturally integrates with the GMain event loop framework.
To enable use of the GMain event loop glue, the
should be invoked. Once this is done, it is mandatory to have the default
GMain event loop run by a thread in the application, usually the primary
thread, eg by using gvir_event_register()
or gtk_main()
g_application_run()
Example 3. Registering for events with a GTK application
int main(int argc, char **argv) { ...setup... gvir_event_register(); ...more setup... gtk_main(); return 0; }
Example 4. Registering for events using Application
int main(int argc, char **argv) { ...setup... GApplication *app = ...create some impl of GApplication... gvir_event_register(); ...more setup... g_application_run(app); return 0; }
void
gvir_event_register (void
);
Registers a libvirt event loop implementation that is backed
by the default GMain
context. If invoked more
than once this method will be a no-op. Applications should,
however, take care not to register any another non-GLib
event loop with libvirt.
After invoking this method, it is mandatory to run the
default GMain event loop. Typically this can be satisfied
by invoking gtk_main
or g_application_run
in the application's main thread. Failure to run the event
loop will mean no libvirt events get dispatched, and the
libvirt keepalive timer will kill off libvirt connections
frequently.