in traffic_gen/main.cpp [145:191]
int main(int argc, char *argv[]) {
#if FOLLY_HAVE_LIBGFLAGS
// Enable glog logging to stderr by default.
gflags::SetCommandLineOptionWithMode("logtostderr", "1",
gflags::SET_FLAGS_DEFAULT);
#endif
gflags::ParseCommandLineFlags(&argc, &argv, false);
folly::Init init(&argc, &argv);
fizz::CryptoUtils::init();
quic::CongestionControlType cc_algo;
std::shared_ptr<quic::CongestionControllerFactory> ccFactory =
std::make_shared<quic::DefaultCongestionControllerFactory>();
if (FLAGS_cc_algo == "cubic") {
cc_algo = quic::CongestionControlType::Cubic;
} else if (FLAGS_cc_algo == "newreno") {
cc_algo = quic::CongestionControlType::NewReno;
} else if (FLAGS_cc_algo == "copa") {
cc_algo = quic::CongestionControlType::Copa;
} else if (FLAGS_cc_algo == "bbr") {
cc_algo = quic::CongestionControlType::BBR;
} else if (FLAGS_cc_algo == "rl") {
cc_algo = quic::CongestionControlType::None;
ccFactory = makeRLCongestionControllerFactory();
} else if (FLAGS_cc_algo == "none") {
cc_algo = quic::CongestionControlType::None;
} else {
LOG(ERROR) << "Unknown cc_algo " << FLAGS_cc_algo;
return -1;
}
if (FLAGS_mode == "server") {
ExampleServer server(FLAGS_host, FLAGS_port, cc_algo, ccFactory);
server.start();
} else if (FLAGS_mode == "client") {
if (FLAGS_host.empty() || FLAGS_port == 0) {
LOG(ERROR) << "ExampleClient expected --host and --port";
return -2;
}
ExampleClient client(FLAGS_host, FLAGS_port, cc_algo, ccFactory);
client.start();
} else {
LOG(ERROR) << "Unknown mode specified: " << FLAGS_mode;
return -1;
}
return 0;
}