Diff for /mqtt/src/mqtt_ping.c between versions 1.1.2.2 and 1.1.2.3

version 1.1.2.2, 2012/01/30 22:58:24 version 1.1.2.3, 2012/04/26 09:15:26
Line 16  Usage(void) Line 16  Usage(void)
         printf( " -= MQTT PING =- MQTT Ping from ELWIX\n"          printf( " -= MQTT PING =- MQTT Ping from ELWIX\n"
                 "=== %s@%s === Compiled: %s ===\n\n"                  "=== %s@%s === Compiled: %s ===\n\n"
                 " Syntax: mqtt_ping [options] <connect_to_broker[:port]> <ConnectID>\n\n"                  " Syntax: mqtt_ping [options] <connect_to_broker[:port]> <ConnectID>\n\n"
                   "\t-c <num>\t\tNumber of ping requests (default: 1)\n"
                 "\t-p <port>\t\tDifferent port for connect (default: 1883)\n"                  "\t-p <port>\t\tDifferent port for connect (default: 1883)\n"
                 "\t-T <timeout>\t\tKeep alive timeout in seconds (default: 10sec)\n"                  "\t-T <timeout>\t\tKeep alive timeout in seconds (default: 10sec)\n"
                 "\t-U <username>\t\tUsername\n"                  "\t-U <username>\t\tUsername\n"
Line 35  cleanArgs(struct tagArgs * __restrict args) Line 36  cleanArgs(struct tagArgs * __restrict args)
 }  }
   
 static int  static int
Ping(int sock)Ping(int sock, int num)
 {  {
         int siz = 0;          int siz = 0;
         struct timeval before, after;          struct timeval before, after;
Line 52  Ping(int sock) Line 53  Ping(int sock)
         if (SendTo(sock, siz) == -1)          if (SendTo(sock, siz) == -1)
                 return -1;                  return -1;
   
        do {reply:
                if ((siz = RecvFrom(sock)) == -1 || !siz)        if ((siz = RecvFrom(sock)) == -1 || !siz)
                 return -1;
         else
                 hdr = (struct mqtthdr*) args->msg->msg_base;
         if (hdr->mqtt_msg.type == MQTT_TYPE_PINGREQ) {
                 siz = mqtt_msgPINGRESP(args->msg);
                 if (siz == -1) {
                         printf("Error:: msgPINGRESP #%d - %s\n", mqtt_GetErrno(), mqtt_GetError());
                         return -1;                          return -1;
                 else  
                         hdr = (struct mqtthdr*) args->msg->msg_base;  
                 if (hdr->mqtt_msg.type == MQTT_TYPE_PINGREQ) {  
                         siz = mqtt_msgPINGRESP(args->msg);  
                         if (siz == -1) {  
                                 printf("Error:: msgPINGRESP #%d - %s\n", mqtt_GetErrno(), mqtt_GetError());  
                                 return -1;  
                         }  
                         if (SendTo(sock, siz) == -1)  
                                 return -1;  
                 } else {  
                         siz = mqtt_readPINGRESP(args->msg);  
                         if (siz == -1) {  
                                 printf("Error:: readPINGRESP #%d - %s\n", mqtt_GetErrno(), mqtt_GetError());  
                                 return -1;  
                         } else  
                                 break;  
                 }                  }
        } while (42);                if (SendTo(sock, siz) == -1)
                         return -1;
   
                   goto reply;
           } else {
                   siz = mqtt_readPINGRESP(args->msg);
                   if (siz == -1) {
                           printf("Error:: readPINGRESP #%d - %s\n", mqtt_GetErrno(), mqtt_GetError());
                           return -1;
                   }
           }
   
         gettimeofday(&after, NULL);          gettimeofday(&after, NULL);
   
        printf(" + Ping MQTT broker %s ... %f sec.\n", io_n2addr(&args->addr, &val),         printf(" + Ping %d MQTT broker %s ... %f sec.\n", num, io_n2addr(&args->addr, &val), 
                         ((after.tv_sec - before.tv_sec) + (after.tv_usec - before.tv_usec) / 1.e6));                          ((after.tv_sec - before.tv_sec) + (after.tv_usec - before.tv_usec) / 1.e6));
         AIT_FREE_VAL(&val);          AIT_FREE_VAL(&val);
   
Line 91  main(int argc, char **argv) Line 92  main(int argc, char **argv)
         char ch;          char ch;
         ait_val_t val;          ait_val_t val;
         u_short port = atoi(MQTT_PORT);          u_short port = atoi(MQTT_PORT);
        int sock, ret = 0;        int sock, num = 1, ret = 0, lost = 0;
         register int i;
   
         if (!(args = malloc(sizeof(struct tagArgs)))) {          if (!(args = malloc(sizeof(struct tagArgs)))) {
                 printf("Error:: in alloc arguments #%d - %s\n", errno, strerror(errno));                  printf("Error:: in alloc arguments #%d - %s\n", errno, strerror(errno));
Line 112  main(int argc, char **argv) Line 114  main(int argc, char **argv)
         AIT_SET_STR(&args->Pass, "");          AIT_SET_STR(&args->Pass, "");
   
         args->ka = MQTT_KEEPALIVE;          args->ka = MQTT_KEEPALIVE;
        while ((ch = getopt(argc, argv, "T:U:P:p:vh")) != -1)        while ((ch = getopt(argc, argv, "T:U:P:p:c:vh")) != -1)
                 switch (ch) {                  switch (ch) {
                           case 'c':
                                   num = (int) strtol(optarg, NULL, 0);
                         case 'T':                          case 'T':
                                 args->ka = (u_short) strtol(optarg, NULL, 0);                                  args->ka = (u_short) strtol(optarg, NULL, 0);
                                 break;                                  break;
Line 191  main(int argc, char **argv) Line 195  main(int argc, char **argv)
         }          }
   
         if (ret == MQTT_RETCODE_ACCEPTED) {          if (ret == MQTT_RETCODE_ACCEPTED) {
                ret = Ping(sock) ? 3 : 0;                for (i = 0; i < num; i++)
                         if ((ret = Ping(sock, i))) {
                                 ret = 3;
                                 lost++;
                         }
                 CloseClient(sock);                  CloseClient(sock);
   
                   printf("\nMQTT ping sended %d requests with %d lost responses\n", num, lost);
         } else {          } else {
                 close(sock);                  close(sock);
                 ret = 4;                  ret = 4;

Removed from v.1.1.2.2  
changed lines
  Added in v.1.1.2.3


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>