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

version 1.1.2.2, 2012/01/30 22:58:24 version 1.2, 2012/07/03 09:02:50
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, struct timeval * __restrict accu)
 {  {
        int siz = 0;        struct timeval before, after, calc;
        struct timeval before, after; 
         ait_val_t val;          ait_val_t val;
         struct mqtthdr *hdr;  
   
         gettimeofday(&before, NULL);          gettimeofday(&before, NULL);
   
        siz = mqtt_msgPINGREQ(args->msg);        if (mqtt_KeepAlive(args->cli->sock, args->ka, 1) == -1)
        if (siz == -1) { 
                printf("Error:: msgPINGREQ #%d - %s\n", mqtt_GetErrno(), mqtt_GetError()); 
                 return -1;                  return -1;
         }  
         if (SendTo(sock, siz) == -1)  
                 return -1;  
   
         do {  
                 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;  
                         }  
                         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);  
   
         gettimeofday(&after, NULL);          gettimeofday(&after, NULL);
   
        printf(" + Ping MQTT broker %s ... %f sec.\n", io_n2addr(&args->addr, &val),         timersub(&after, &before, &calc);
                        ((after.tv_sec - before.tv_sec) + (after.tv_usec - before.tv_usec) / 1.e6));        timeradd(accu, &calc, accu);
 
         printf(" + Ping %d MQTT broker %s ... %f sec.\n", num, io_n2addr(&args->addr, &val), 
                         calc.tv_sec + calc.tv_usec / 1.e6);
         AIT_FREE_VAL(&val);          AIT_FREE_VAL(&val);
   
         return 0;          return 0;
Line 91  main(int argc, char **argv) Line 65  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 num = 1, ret = 0, lost = 0;
         register int i;
         struct timeval accu;
   
        if (!(args = malloc(sizeof(struct tagArgs)))) {        if (!(args = io_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));
                 return 1;                  return 1;
         } else          } else
Line 103  main(int argc, char **argv) Line 79  main(int argc, char **argv)
         if (!(args->msg = mqtt_msgAlloc(USHRT_MAX))) {          if (!(args->msg = mqtt_msgAlloc(USHRT_MAX))) {
                 printf("Error:: in mqtt buffer #%d - %s\n", mqtt_GetErrno(), mqtt_GetError());                  printf("Error:: in mqtt buffer #%d - %s\n", mqtt_GetErrno(), mqtt_GetError());
                 args->free(args);                  args->free(args);
                free(args);                io_free(args);
                 return 1;                  return 1;
         }          }
   
Line 112  main(int argc, char **argv) Line 88  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);
                                   break;
                         case 'T':                          case 'T':
                                 args->ka = (u_short) strtol(optarg, NULL, 0);                                  args->ka = (u_short) strtol(optarg, NULL, 0);
                                 break;                                  break;
Line 134  main(int argc, char **argv) Line 113  main(int argc, char **argv)
                         case 'h':                          case 'h':
                         default:                          default:
                                 args->free(args);                                  args->free(args);
                                free(args);                                io_free(args);
                                 Usage();                                  Usage();
                                 return 1;                                  return 1;
                 }                  }
Line 143  main(int argc, char **argv) Line 122  main(int argc, char **argv)
         if (argc < 2) {          if (argc < 2) {
                 printf("Error:: host for connect not found or connection id!\n\n");                  printf("Error:: host for connect not found or connection id!\n\n");
                 args->free(args);                  args->free(args);
                free(args);                io_free(args);
                 Usage();                  Usage();
                 return 1;                  return 1;
         } else {          } else {
Line 153  main(int argc, char **argv) Line 132  main(int argc, char **argv)
         if (!io_gethostbyname(*argv, port, &args->addr)) {          if (!io_gethostbyname(*argv, port, &args->addr)) {
                 printf("Error:: host not valid #%d - %s\n", io_GetErrno(), io_GetError());                  printf("Error:: host not valid #%d - %s\n", io_GetErrno(), io_GetError());
                 args->free(args);                  args->free(args);
                free(args);                io_free(args);
                 Usage();                  Usage();
                 return 1;                  return 1;
         }          }
         printf("Connecting to %s:%d ... ", io_n2addr(&args->addr, &val), io_n2port(&args->addr));          printf("Connecting to %s:%d ... ", io_n2addr(&args->addr, &val), io_n2port(&args->addr));
         AIT_FREE_VAL(&val);          AIT_FREE_VAL(&val);
   
        if ((sock = InitClient()) == -1) {        if (!(args->cli = mqtt_cli_Open(&args->addr.sa, args->ka))) {
                 args->free(args);                  args->free(args);
                free(args);                io_free(args);
                 return 2;                  return 2;
         }          }
   
        switch ((ret = ConnectClient(sock))) {        switch ((ret = ConnectClient(args->cli->sock))) {
                 case -1:                  case -1:
                         printf(">> FAILED!\n");                          printf(">> FAILED!\n");
                         break;                          break;
Line 190  main(int argc, char **argv) Line 169  main(int argc, char **argv)
                         break;                          break;
         }          }
   
           timerclear(&accu);
         if (ret == MQTT_RETCODE_ACCEPTED) {          if (ret == MQTT_RETCODE_ACCEPTED) {
                ret = Ping(sock) ? 3 : 0;                for (i = 0; i < num; i++)
                CloseClient(sock);                        if ((ret = Ping(args->cli->sock, i, &accu))) {
        } else {                                ret = 3;
                close(sock);                                lost++;
                         }
                 printf("\nMQTT ping sended %d requests with %d lost responses and avarage %f sec.\n", 
                                 num, lost, (accu.tv_sec + accu.tv_usec / 1.e6) / (num - lost));
         } else
                 ret = 4;                  ret = 4;
         }  
   
           mqtt_cli_Close(&args->cli);
   
         args->free(args);          args->free(args);
        free(args);        io_free(args);
         return ret;          return ret;
 }  }

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


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