コード例 #1
0
ファイル: reactor-recv.c プロジェクト: MZDN/qpid-proton
static void parse_options( int argc, char **argv, Options_t *opts )
{
    int c;
    opterr = 0;

    memset( opts, 0, sizeof(*opts) );
    opts->recv_count = -1;
    opts->timeout = -1;
    addresses_init( &opts->subscriptions);

    while ((c = getopt(argc, argv,
                       "a:c:b:w:t:e:RW:F:VN:X:T:C:K:P:")) != -1) {
        switch (c) {
        case 'a':
          {
            // TODO: multiple addresses?
            char *comma = strchr(optarg, ',');
            check(comma == 0, "multiple addresses not implemented");
            check(opts->subscriptions.count == 0, "multiple addresses not implemented");
            addresses_merge( &opts->subscriptions, optarg );
          }
          break;
        case 'c':
            if (sscanf( optarg, "%" SCNu64, &opts->msg_count ) != 1) {
                fprintf(stderr, "Option -%c requires an integer argument.\n", optopt);
                usage(1);
            }
            break;
        case 't':
            if (sscanf( optarg, "%d", &opts->timeout ) != 1) {
                fprintf(stderr, "Option -%c requires an integer argument.\n", optopt);
                usage(1);
            }
            if (opts->timeout > 0) opts->timeout *= 1000;
            break;
        case 'R': opts->reply = 1; break;
        case 'V': enable_logging(); break;
        case 'X': opts->ready_text = optarg; break;
        default:
            usage(1);
        }
    }

    if (opts->subscriptions.count == 0) addresses_add( &opts->subscriptions,
                                                       "amqp://~0.0.0.0" );
}
コード例 #2
0
ファイル: msgr-recv.c プロジェクト: 850361813/qpid-proton
static void parse_options( int argc, char **argv, Options_t *opts )
{
    int c;
    opterr = 0;

    memset( opts, 0, sizeof(*opts) );
    opts->recv_count = -1;
    opts->timeout = -1;
    addresses_init(&opts->subscriptions);
    addresses_init(&opts->forwarding_targets);

    while ((c = getopt(argc, argv,
                       "a:c:b:w:t:e:RW:F:VN:X:T:C:K:P:")) != -1) {
        switch (c) {
        case 'a': addresses_merge( &opts->subscriptions, optarg ); break;
        case 'c':
            if (sscanf( optarg, "%" SCNu64, &opts->msg_count ) != 1) {
                fprintf(stderr, "Option -%c requires an integer argument.\n", optopt);
                usage(1);
            }
            break;
        case 'b':
            if (sscanf( optarg, "%d", &opts->recv_count ) != 1) {
                fprintf(stderr, "Option -%c requires an integer argument.\n", optopt);
                usage(1);
            }
            break;
        case 'w':
            if (sscanf( optarg, "%d", &opts->incoming_window ) != 1) {
                fprintf(stderr, "Option -%c requires an integer argument.\n", optopt);
                usage(1);
            }
            break;
        case 't':
            if (sscanf( optarg, "%d", &opts->timeout ) != 1) {
                fprintf(stderr, "Option -%c requires an integer argument.\n", optopt);
                usage(1);
            }
            if (opts->timeout > 0) opts->timeout *= 1000;
            break;
        case 'e':
            if (sscanf( optarg, "%u", &opts->report_interval ) != 1) {
                fprintf(stderr, "Option -%c requires an integer argument.\n", optopt);
                usage(1);
            }
            break;
        case 'R': opts->reply = 1; break;
        case 'W':
            if (sscanf( optarg, "%d", &opts->outgoing_window ) != 1) {
                fprintf(stderr, "Option -%c requires an integer argument.\n", optopt);
                usage(1);
            }
            break;
        case 'F': addresses_merge( &opts->forwarding_targets, optarg ); break;
        case 'V': enable_logging(); break;
        case 'N': opts->name = optarg; break;
        case 'X': opts->ready_text = optarg; break;
        case 'T': opts->ca_db = optarg; break;
        case 'C': opts->certificate = optarg; break;
        case 'K': opts->privatekey = optarg; break;
        case 'P': parse_password( optarg, &opts->password ); break;

        default:
            usage(1);
        }
    }

    // default subscription if none specified
    if (opts->subscriptions.count == 0) addresses_add( &opts->subscriptions,
                                                       "amqp://~0.0.0.0" );
}
コード例 #3
0
static void 
parse_options ( int argc, char **argv, Options_t *opts )
{
  opterr = 0;

  memset( opts, 0, sizeof(*opts) );
  opts->recv_count = -1;
  opts->report_frequency = 0;
  opts->timestamping = false;
  opts->msg_count = 0;
  opts->message_size = 0;
  opts->print_message_size = false;
  strcpy ( opts->results_dir, "none" );
  addresses_init( &opts->subscriptions);

  for ( int i = 1; i < argc; ++ i )
  {
    char * arg = argv[i];

    if ( ! strcmp ( "-c", arg ) )
    {
      opts->msg_count = atoi(argv[i+1]);
      ++ i;
    }
    else
    if ( ! strcmp ( "-t", arg ) )
    {
      opts->timestamping = true;
    }
    else
    if ( ! strcmp ( "-r", arg ) )
    {
      opts->report_frequency = atoi(argv[i+1]);
      ++ i;
    }
    else
    if ( ! strcmp ( "-d", arg ) )
    {
      strcpy ( opts->results_dir, argv[i+1]);
      ++ i;
    }
    else
    if ( ! strcmp ( "-s", arg ) )
    {
      opts->message_size = atoi ( argv[i+1] );
      ++ i;
    }
    else
    if ( ! strcmp ( "-print_message_size", arg ) )
    {
      opts->print_message_size = true;
    }
    else
    {
      fprintf ( stderr, "reactor-recv unknown option: |%s|\n", arg );
      exit ( 1 );
    }
  }

  if (opts->subscriptions.count == 0) 
    addresses_add( &opts->subscriptions, "amqp://~0.0.0.0" );
}
コード例 #4
0
ファイル: reactor-send.c プロジェクト: MZDN/qpid-proton
static void parse_options( int argc, char **argv, Options_t *opts )
{
    int c;
    opterr = 0;

    memset( opts, 0, sizeof(*opts) );
    opts->msg_size  = 1024;
    opts->send_batch = 1024;
    opts->timeout = -1;
    opts->recv_count = -1;
    addresses_init(&opts->targets);

    while ((c = getopt(argc, argv,
                       "a:c:b:p:w:e:l:Rt:W:B:VN:T:C:K:P:")) != -1) {
        switch(c) {
        case 'a':
          {
            // TODO: multiple addresses?  To keep tests happy, accept multiple for now,
            // but ignore all but the first.
            addresses_merge( &opts->targets, optarg );
          }
          break;
        case 'c':
            if (sscanf( optarg, "%" SCNu64, &opts->msg_count ) != 1) {
                fprintf(stderr, "Option -%c requires an integer argument.\n", optopt);
                usage(1);
            }
            break;
        case 'b':
            if (sscanf( optarg, "%u", &opts->msg_size ) != 1) {
                fprintf(stderr, "Option -%c requires an integer argument.\n", optopt);
                usage(1);
            }
            break;
        case 'p':
            if (sscanf( optarg, "%u", &opts->send_batch ) != 1) {
                fprintf(stderr, "Option -%c requires an integer argument.\n", optopt);
                usage(1);
            }
            break;
        case 'w':
            if (sscanf( optarg, "%d", &opts->outgoing_window ) != 1) {
                fprintf(stderr, "Option -%c requires an integer argument.\n", optopt);
                usage(1);
            }
            break;
        case 'e':
            if (sscanf( optarg, "%u", &opts->report_interval ) != 1) {
                fprintf(stderr, "Option -%c requires an integer argument.\n", optopt);
                usage(1);
            }
            break;
        case 'R': opts->get_replies = 1; break;
        case 't':
            if (sscanf( optarg, "%d", &opts->timeout ) != 1) {
                fprintf(stderr, "Option -%c requires an integer argument.\n", optopt);
                usage(1);
            }
            if (opts->timeout > 0) opts->timeout *= 1000;
            break;
        case 'W':
            if (sscanf( optarg, "%d", &opts->incoming_window ) != 1) {
                fprintf(stderr, "Option -%c requires an integer argument.\n", optopt);
                usage(1);
            }
            break;
        case 'B':
            if (sscanf( optarg, "%d", &opts->recv_count ) != 1) {
                fprintf(stderr, "Option -%c requires an integer argument.\n", optopt);
                usage(1);
            }
            break;
        case 'V': enable_logging(); break;
        case 'N': opts->name = optarg; break;
        case 'T': opts->ca_db = optarg; break;
        case 'C': opts->certificate = optarg; break;
        case 'K': opts->privatekey = optarg; break;
        case 'P': parse_password( optarg, &opts->password ); break;

        default:
            usage(1);
        }
    }

    // default target if none specified
    if (opts->targets.count == 0) addresses_add( &opts->targets, "amqp://0.0.0.0" );
}