|
@@ -35,142 +35,129 @@
|
|
|
**
|
|
|
**--------------------------------------------------------------------------*/
|
|
|
|
|
|
-Cmdline::Cmdline (int argc, char *argv[]) // ISO C++17 not allowed: throw (std::string )
|
|
|
+Cmdline::Cmdline(int argc, char *argv[]) // ISO C++17 not allowed: throw (std::string )
|
|
|
{
|
|
|
- extern char *optarg;
|
|
|
- extern int optind;
|
|
|
- int c;
|
|
|
-
|
|
|
- static struct option long_options[] =
|
|
|
- {
|
|
|
- {"noStun", no_argument, NULL, 'n'},
|
|
|
- {"stunServer", required_argument, NULL, 's'},
|
|
|
- {"stunPort", required_argument, NULL, 't'},
|
|
|
- {"webSocketServer", required_argument, NULL, 'w'},
|
|
|
- {"webSocketPort", required_argument, NULL, 'x'},
|
|
|
- {"durationInSec",required_argument,NULL,'d'},
|
|
|
- {"noSend", no_argument, NULL, 'o'},
|
|
|
- {"enableThroughputSet", no_argument, NULL, 'p'},
|
|
|
- {"throughtputSetAsKB",required_argument,NULL,'r'},
|
|
|
- {"bufferSet",required_argument,NULL,'b'},
|
|
|
- {"help", no_argument, NULL, 'h'},
|
|
|
- {NULL, 0, NULL, 0}
|
|
|
- };
|
|
|
-
|
|
|
- _program_name += argv[0];
|
|
|
-
|
|
|
- /* default values */
|
|
|
- _n = false;
|
|
|
- _s = "stun.l.google.com";
|
|
|
- _t = 19302;
|
|
|
- _w = "localhost";
|
|
|
- _x = 8000;
|
|
|
- _h = false;
|
|
|
- _d = 300;
|
|
|
- _o = false;
|
|
|
- _p = false;
|
|
|
- _r = 300;
|
|
|
- _b = 10;
|
|
|
-
|
|
|
- optind = 0;
|
|
|
- while ((c = getopt_long (argc, argv, "s:t:w:x:d:r:b:enhvop", long_options, &optind)) != - 1)
|
|
|
- {
|
|
|
- switch (c)
|
|
|
- {
|
|
|
- case 'n':
|
|
|
- _n = true;
|
|
|
- break;
|
|
|
-
|
|
|
- case 's':
|
|
|
- _s = optarg;
|
|
|
- break;
|
|
|
-
|
|
|
- case 't':
|
|
|
- _t = atoi (optarg);
|
|
|
- if (_t < 0)
|
|
|
- {
|
|
|
- std::string err;
|
|
|
- err += "parameter range error: t must be >= 0";
|
|
|
- throw (std::range_error(err));
|
|
|
- }
|
|
|
- if (_t > 65535)
|
|
|
- {
|
|
|
- std::string err;
|
|
|
- err += "parameter range error: t must be <= 65535";
|
|
|
- throw (std::range_error(err));
|
|
|
- }
|
|
|
- break;
|
|
|
-
|
|
|
- case 'w':
|
|
|
- _w = optarg;
|
|
|
- break;
|
|
|
-
|
|
|
- case 'x':
|
|
|
- _x = atoi (optarg);
|
|
|
- if (_x < 0)
|
|
|
- {
|
|
|
- std::string err;
|
|
|
- err += "parameter range error: x must be >= 0";
|
|
|
- throw (std::range_error(err));
|
|
|
- }
|
|
|
- if (_x > 65535)
|
|
|
- {
|
|
|
- std::string err;
|
|
|
- err += "parameter range error: x must be <= 65535";
|
|
|
- throw (std::range_error(err));
|
|
|
- }
|
|
|
- break;
|
|
|
-
|
|
|
- case 'd':
|
|
|
- _d = atoi (optarg);
|
|
|
- if (_d < 0)
|
|
|
- {
|
|
|
- std::string err;
|
|
|
- err += "parameter range error: d must be >= 0";
|
|
|
- throw (std::range_error(err));
|
|
|
- }
|
|
|
- break;
|
|
|
-
|
|
|
- case 'o':
|
|
|
- _o = true;
|
|
|
- break;
|
|
|
-
|
|
|
- case 'p':
|
|
|
- _p = true;
|
|
|
- break;
|
|
|
-
|
|
|
- case 'r':
|
|
|
- _r = atoi (optarg);
|
|
|
- if (_r <= 0)
|
|
|
- {
|
|
|
- std::string err;
|
|
|
- err += "parameter range error: r must be > 0";
|
|
|
- throw (std::range_error(err));
|
|
|
- }
|
|
|
- break;
|
|
|
-
|
|
|
- case 'b':
|
|
|
- _b = atoi (optarg);
|
|
|
- if (_b <= 0)
|
|
|
- {
|
|
|
- std::string err;
|
|
|
- err += "parameter range error: b must be > 0";
|
|
|
- throw (std::range_error(err));
|
|
|
- }
|
|
|
- break;
|
|
|
-
|
|
|
- case 'h':
|
|
|
- _h = true;
|
|
|
- this->usage (EXIT_SUCCESS);
|
|
|
- break;
|
|
|
-
|
|
|
- default:
|
|
|
- this->usage (EXIT_FAILURE);
|
|
|
-
|
|
|
- }
|
|
|
- } /* while */
|
|
|
-
|
|
|
- _optind = optind;
|
|
|
+ extern char *optarg;
|
|
|
+ extern int optind;
|
|
|
+ int c;
|
|
|
+
|
|
|
+ static struct option long_options[] = {{"noStun", no_argument, NULL, 'n'},
|
|
|
+ {"stunServer", required_argument, NULL, 's'},
|
|
|
+ {"stunPort", required_argument, NULL, 't'},
|
|
|
+ {"webSocketServer", required_argument, NULL, 'w'},
|
|
|
+ {"webSocketPort", required_argument, NULL, 'x'},
|
|
|
+ {"durationInSec", required_argument, NULL, 'd'},
|
|
|
+ {"noSend", no_argument, NULL, 'o'},
|
|
|
+ {"enableThroughputSet", no_argument, NULL, 'p'},
|
|
|
+ {"throughtputSetAsKB", required_argument, NULL, 'r'},
|
|
|
+ {"bufferSize", required_argument, NULL, 'b'},
|
|
|
+ {"help", no_argument, NULL, 'h'},
|
|
|
+ {NULL, 0, NULL, 0}};
|
|
|
+
|
|
|
+ _program_name += argv[0];
|
|
|
+
|
|
|
+ /* default values */
|
|
|
+ _n = false;
|
|
|
+ _s = "stun.l.google.com";
|
|
|
+ _t = 19302;
|
|
|
+ _w = "localhost";
|
|
|
+ _x = 8000;
|
|
|
+ _h = false;
|
|
|
+ _d = 300;
|
|
|
+ _o = false;
|
|
|
+ _p = false;
|
|
|
+ _r = 300;
|
|
|
+ _b = 3000;
|
|
|
+
|
|
|
+ optind = 0;
|
|
|
+ while ((c = getopt_long(argc, argv, "s:t:w:x:d:r:b:enhvop", long_options, &optind)) != -1) {
|
|
|
+ switch (c) {
|
|
|
+ case 'n':
|
|
|
+ _n = true;
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 's':
|
|
|
+ _s = optarg;
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 't':
|
|
|
+ _t = atoi(optarg);
|
|
|
+ if (_t < 0) {
|
|
|
+ std::string err;
|
|
|
+ err += "parameter range error: t must be >= 0";
|
|
|
+ throw(std::range_error(err));
|
|
|
+ }
|
|
|
+ if (_t > 65535) {
|
|
|
+ std::string err;
|
|
|
+ err += "parameter range error: t must be <= 65535";
|
|
|
+ throw(std::range_error(err));
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 'w':
|
|
|
+ _w = optarg;
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 'x':
|
|
|
+ _x = atoi(optarg);
|
|
|
+ if (_x < 0) {
|
|
|
+ std::string err;
|
|
|
+ err += "parameter range error: x must be >= 0";
|
|
|
+ throw(std::range_error(err));
|
|
|
+ }
|
|
|
+ if (_x > 65535) {
|
|
|
+ std::string err;
|
|
|
+ err += "parameter range error: x must be <= 65535";
|
|
|
+ throw(std::range_error(err));
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 'd':
|
|
|
+ _d = atoi(optarg);
|
|
|
+ if (_d < 0) {
|
|
|
+ std::string err;
|
|
|
+ err += "parameter range error: d must be >= 0";
|
|
|
+ throw(std::range_error(err));
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 'o':
|
|
|
+ _o = true;
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 'b':
|
|
|
+ _b = atoi(optarg);
|
|
|
+ if (_b < 0) {
|
|
|
+ std::string err;
|
|
|
+ err += "parameter range error: b must be >= 0";
|
|
|
+ throw(std::range_error(err));
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 'p':
|
|
|
+ _p = true;
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 'r':
|
|
|
+ _r = atoi(optarg);
|
|
|
+ if (_r <= 0) {
|
|
|
+ std::string err;
|
|
|
+ err += "parameter range error: r must be > 0";
|
|
|
+ throw(std::range_error(err));
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 'h':
|
|
|
+ _h = true;
|
|
|
+ this->usage(EXIT_SUCCESS);
|
|
|
+ break;
|
|
|
+
|
|
|
+ default:
|
|
|
+ this->usage(EXIT_FAILURE);
|
|
|
+ }
|
|
|
+ } /* while */
|
|
|
+
|
|
|
+ _optind = optind;
|
|
|
}
|
|
|
|
|
|
/*----------------------------------------------------------------------------
|
|
@@ -181,14 +168,13 @@ Cmdline::Cmdline (int argc, char *argv[]) // ISO C++17 not allowed: throw (std::
|
|
|
**
|
|
|
**--------------------------------------------------------------------------*/
|
|
|
|
|
|
-void Cmdline::usage (int status)
|
|
|
-{
|
|
|
- if (status != EXIT_SUCCESS)
|
|
|
- std::cerr << "Try `" << _program_name << " --help' for more information.\n";
|
|
|
- else
|
|
|
- {
|
|
|
- std::cout << "\
|
|
|
-usage: " << _program_name << " [ -enstwxhv ] \n\
|
|
|
+void Cmdline::usage(int status) {
|
|
|
+ if (status != EXIT_SUCCESS)
|
|
|
+ std::cerr << "Try `" << _program_name << " --help' for more information.\n";
|
|
|
+ else {
|
|
|
+ std::cout << "\
|
|
|
+usage: " << _program_name
|
|
|
+ << " [ -enstwxdobprhv ] \n\
|
|
|
libdatachannel client implementing WebRTC Data Channels with WebSocket signaling\n\
|
|
|
[ -n ] [ --noStun ] (type=FLAG)\n\
|
|
|
Do NOT use a stun server (overrides -s and -t).\n\
|
|
@@ -202,17 +188,16 @@ libdatachannel client implementing WebRTC Data Channels with WebSocket signaling
|
|
|
Web socket server port.\n\
|
|
|
[ -d ] [ --durationInSec ] (type=INTEGER, range>=0...INT32_MAX, 0:infinite(INT32_MAX), Valid only for offering client, default=300)\n\
|
|
|
Benchmark duration in seconds.\n\
|
|
|
- [ -n ] [ --noSend ] (type=FLAG)\n\
|
|
|
+ [ -o ] [ --noSend ] (type=FLAG)\n\
|
|
|
Do NOT send message (Only Receive, for one-way testing purposes).\n\
|
|
|
+ [ -b ] [ --bufferSize ] (type=INTEGER, range>0...INT_MAX, default=0)\n\
|
|
|
+ Set internal buffer size .\n\
|
|
|
[ -p ] [ --enableThroughputSet ] (type=FLAG)\n\
|
|
|
- Send a constant data per second (KB). See throughtputSetAsKB and bufferSet params.\n\
|
|
|
+ Send a constant data per second (KB). See throughtputSetAsKB params.\n\
|
|
|
[ -r ] [ --throughtputSetAsKB ] (type=INTEGER, range>0...INT_MAX, default=300)\n\
|
|
|
Send constant data per second (KB).\n\
|
|
|
- [ -b ] [ --bufferSet ] (type=INTEGER, range>0...INT_MAX, default=10)\n\
|
|
|
- Set internal buffer as bufferSet*throughtputSetAsKB/100.\n\
|
|
|
[ -h ] [ --help ] (type=FLAG)\n\
|
|
|
Display this help and exit.\n";
|
|
|
- }
|
|
|
- exit (status);
|
|
|
+ }
|
|
|
+ exit(status);
|
|
|
}
|
|
|
-
|