[libvirt-users] event handler

Alexandr sss at sss.chaoslab.ru
Mon Oct 14 00:42:39 UTC 2013


good day to all.
i still have not solved my problem with event handling.
currently i have following code


void libvirt_eventloop_thr_func()
{
	while(true) //TODO: stop somehow on exit
	{
		if(virEventRunDefaultImpl() < 0)
		{
			virErrorPtr err = virGetLastError();
			fprintf(stderr, "Failed to run event loop: %s\n", err && err->message 
? err->message : "Unknown error");
		}
	}
}



...

	virSetErrorFunc(NULL, libvirt_error_handler);
	libvirt_connection = virConnectOpen("qemu:///system");
	if (virEventRegisterDefaultImpl() < 0)
	{
		virErrorPtr err = virGetLastError();
		fprintf(stderr, "Failed to register event implementation: %s\n", err 
&& err->message ? err->message: "Unknown error");
			return -1;
	}
	{
		int callback = virConnectDomainEventRegisterAny(libvirt_connection, 
NULL, VIR_DOMAIN_EVENT_ID_LIFECYCLE, 
VIR_DOMAIN_EVENT_CALLBACK(domain_event_handler), NULL, NULL);
		if(callback == -1)
		{
			std::cout<<"Error: failed to register domain event handle 
callback\n";
			return -1;
		}
	}

	boost::thread(boost::bind(&libvirt_eventloop_thr_func));

...

libvirt_eventloop_thr_func() called, and locked on 
virEventRunDefaultImpl(), can it be called in thread, and if no, how 
should i use it correctly ?
sorry for asking again, but i really can't solve it myself.
thx in advance.




More information about the libvirt-users mailing list