/* Prototypes */
const char *eventToString(int event);
-int myDomainEventCallback1 (virConnectPtr conn, virDomainPtr dom,
- int event, int detail, void *opaque);
-int myDomainEventCallback2 (virConnectPtr conn, virDomainPtr dom,
- int event, int detail, void *opaque);
int myEventAddHandleFunc (int fd, int event,
virEventHandleCallback cb,
void *opaque,
return ret;
}
-int myDomainEventCallback1 (virConnectPtr conn ATTRIBUTE_UNUSED,
- virDomainPtr dom,
- int event,
- int detail,
- void *opaque ATTRIBUTE_UNUSED)
+static int myDomainEventCallback1(virConnectPtr conn ATTRIBUTE_UNUSED,
+ virDomainPtr dom,
+ int event,
+ int detail,
+ void *opaque ATTRIBUTE_UNUSED)
{
printf("%s EVENT: Domain %s(%d) %s %s\n", __func__, virDomainGetName(dom),
virDomainGetID(dom), eventToString(event),
return 0;
}
-int myDomainEventCallback2 (virConnectPtr conn ATTRIBUTE_UNUSED,
- virDomainPtr dom,
- int event,
- int detail,
- void *opaque ATTRIBUTE_UNUSED)
+static int myDomainEventCallback2(virConnectPtr conn ATTRIBUTE_UNUSED,
+ virDomainPtr dom,
+ int event,
+ int detail,
+ void *opaque ATTRIBUTE_UNUSED)
{
printf("%s EVENT: Domain %s(%d) %s %s\n", __func__, virDomainGetName(dom),
virDomainGetID(dom), eventToString(event),
int sts;
int callback1ret = -1;
int callback2ret = -1;
+
struct sigaction action_stop = {
.sa_handler = stop
};
myEventRemoveTimeoutFunc);
virConnectPtr dconn = NULL;
- dconn = virConnectOpen (argv[1] ? argv[1] : NULL);
+ dconn = virConnectOpenReadOnly (argv[1] ? argv[1] : NULL);
if (!dconn) {
printf("error opening\n");
return -1;
/* Add 2 callbacks to prove this works with more than just one */
callback1ret = virConnectDomainEventRegister(dconn, myDomainEventCallback1,
strdup("callback 1"), myFreeFunc);
- callback2ret = virConnectDomainEventRegister(dconn, myDomainEventCallback2,
- strdup("callback 2"), myFreeFunc);
-
- if ((callback1ret == 0) && (callback2ret == 0) ) {
+ callback2ret = virConnectDomainEventRegisterAny(dconn,
+ NULL,
+ VIR_DOMAIN_EVENT_ID_LIFECYCLE,
+ VIR_DOMAIN_EVENT_CALLBACK(myDomainEventCallback2),
+ strdup("callback 2"), myFreeFunc);
+
+ if ((callback1ret != -1) &&
+ (callback2ret != -1)) {
while(run) {
struct pollfd pfd = { .fd = h_fd,
.events = h_event,
DEBUG0("Deregistering event handlers");
virConnectDomainEventDeregister(dconn, myDomainEventCallback1);
- virConnectDomainEventDeregister(dconn, myDomainEventCallback2);
+ virConnectDomainEventDeregisterAny(dconn, callback2ret);
}