in c/tools/reactor-send.c [309:397]
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;
opts->unique_message = 0;
addresses_init(&opts->targets);
while ((c = getopt(argc, argv,
"ua: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 'u': opts->unique_message = 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" );
}