]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
Fix the example code for event handling in C
authorDaniel Veillard <veillard@redhat.com>
Mon, 25 May 2009 09:44:10 +0000 (09:44 +0000)
committerDaniel Veillard <veillard@redhat.com>
Mon, 25 May 2009 09:44:10 +0000 (09:44 +0000)
* examples/domain-events/events-c/event-test.c: fixed the example
  code for event handling, patch by Pritesh Kothari
daniel

ChangeLog
examples/domain-events/events-c/event-test.c

index d69f3d95458ec23a57a9ec6d5c33ccb49f696a33..2d844e252f3cb262c1cc4478eeda243f3a516fb9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Mon May 25 11:42:15 CEST 2009 Daniel Veillard <veillard@redhat.com>
+
+       * examples/domain-events/events-c/event-test.c: fixed the example
+         code for event handling, patch by Pritesh Kothari
+
 Thu May 21 15:22:22 BST 2009 Daniel P. Berrange <berrange@redhat.com>
 
        Test case for QEMU driver ARGV -> XML conversion
index 5272f44b86093703e1fea6de09aa1580ebf8d47b..b506687505106854d17e962fa1e1c54c4b9413bb 100644 (file)
@@ -116,7 +116,7 @@ static const char *eventDetailToString(int event, int detail) {
             break;
         case VIR_DOMAIN_EVENT_SUSPENDED:
             if (detail == VIR_DOMAIN_EVENT_SUSPENDED_PAUSED)
-                ret = "Unpaused";
+                ret = "Paused";
             else if (detail == VIR_DOMAIN_EVENT_SUSPENDED_MIGRATED)
                 ret = "Migrated";
             break;
@@ -291,6 +291,8 @@ static void stop(int sig)
 int main(int argc, char **argv)
 {
     int sts;
+    int callback1ret = -1;
+    int callback2ret = -1;
     struct sigaction action_stop = {
         .sa_handler = stop
     };
@@ -320,48 +322,51 @@ int main(int argc, char **argv)
     DEBUG0("Registering domain event cbs");
 
     /* Add 2 callbacks to prove this works with more than just one */
-    virConnectDomainEventRegister(dconn, myDomainEventCallback1,
-                                  strdup("callback 1"), myFreeFunc);
-    virConnectDomainEventRegister(dconn, myDomainEventCallback2,
-                                  strdup("callback 2"), myFreeFunc);
-
-    while(run) {
-        struct pollfd pfd = { .fd = h_fd,
-                          .events = h_event,
-                          .revents = 0};
-
-        sts = poll(&pfd, 1, TIMEOUT_MS);
+    callback1ret = virConnectDomainEventRegister(dconn, myDomainEventCallback1,
+                                                 strdup("callback 1"), myFreeFunc);
+    callback2ret = virConnectDomainEventRegister(dconn, myDomainEventCallback2,
+                                                 strdup("callback 2"), myFreeFunc);
+
+    if ((callback1ret == 0) && (callback2ret == 0) ) {
+        while(run) {
+            struct pollfd pfd = { .fd = h_fd,
+                              .events = h_event,
+                              .revents = 0};
+
+            sts = poll(&pfd, 1, TIMEOUT_MS);
+
+            /* We are assuming timeout of 0 here - so execute every time */
+            if(t_cb && t_active)
+                t_cb(t_timeout,t_opaque);
+
+            if (sts == 0) {
+                /* DEBUG0("Poll timeout"); */
+                continue;
+            }
+            if (sts < 0 ) {
+                DEBUG0("Poll failed");
+                continue;
+            }
+            if ( pfd.revents & POLLHUP ) {
+                DEBUG0("Reset by peer");
+                return -1;
+            }
 
-        /* We are assuming timeout of 0 here - so execute every time */
-        if(t_cb && t_active)
-            t_cb(t_timeout,t_opaque);
+            if(h_cb) {
+                h_cb(0,
+                     h_fd,
+                     myPollEventToEventHandleType(pfd.revents & h_event),
+                     h_opaque);
+            }
 
-        if (sts == 0) {
-            /* DEBUG0("Poll timeout"); */
-            continue;
-        }
-        if (sts < 0 ) {
-            DEBUG0("Poll failed");
-            continue;
-        }
-        if ( pfd.revents & POLLHUP ) {
-            DEBUG0("Reset by peer");
-            return -1;
         }
 
-        if(h_cb) {
-            h_cb(0,
-                 h_fd,
-                 myPollEventToEventHandleType(pfd.revents & h_event),
-                 h_opaque);
-        }
+        DEBUG0("Deregistering event handlers");
+        virConnectDomainEventDeregister(dconn, myDomainEventCallback1);
+        virConnectDomainEventDeregister(dconn, myDomainEventCallback2);
 
     }
 
-    DEBUG0("Deregistering event handlers");
-    virConnectDomainEventDeregister(dconn, myDomainEventCallback1);
-    virConnectDomainEventDeregister(dconn, myDomainEventCallback2);
-
     DEBUG0("Closing connection");
     if( dconn && virConnectClose(dconn)<0 ) {
         printf("error closing\n");