[libvirt] [PATCH 1/1] fixed the event-test.c example to check for return values

Daniel P. Berrange berrange at redhat.com
Sun May 24 13:11:16 UTC 2009


On Wed, May 20, 2009 at 05:19:33PM +0200, Pritesh Kothari wrote:
> Hi All,
> 
> The event-test.c example doesn't check for the return values while
> registering for the callbacks, this patch just checks for them along
> with a correcting a small typo. (Unpaused => Paused)

ACK, just noticed that 'Paused' typo too :-)

Daniel

> commit e646e55c4167572a8b345f99d9beaac4fa5ca538
> Author: pk221555 <pk221555 at krishna.(none)>
> Date:   Wed May 20 17:12:50 2009 +0200
> 
>     libvirt: fixed event example for checking the return values
> 
> diff --git a/examples/domain-events/events-c/event-test.c b/examples/domain-events/events-c/event-test.c
> index 5272f44..b506687 100644
> --- a/examples/domain-events/events-c/event-test.c
> +++ b/examples/domain-events/events-c/event-test.c
> @@ -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");

> --
> Libvir-list mailing list
> Libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list


-- 
|: Red Hat, Engineering, London   -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org  -o-  http://virt-manager.org  -o-  http://ovirt.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-  F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|




More information about the libvir-list mailing list