in example/client/Main.cpp [78:163]
int main(int argc, char** argv) {
::gflags::ParseCommandLineFlags(&argc, &argv, false);
folly::init(&argc, &argv);
// reassign flags for better readibility
const bool addServiceFlag = FLAGS_A;
const bool editServiceFlag = FLAGS_E;
const bool delServiceFlag = FLAGS_D;
const bool addServerFlag = FLAGS_a;
const bool editServerFlag = FLAGS_e;
const bool delServerFlag = FLAGS_d;
const std::string tcpServiceFlag = FLAGS_t;
const std::string udpServiceFlag = FLAGS_u;
const std::string realServerFlag = FLAGS_r;
const uint64_t realWeightFlag = FLAGS_w;
const bool showStatsFlag = FLAGS_s;
const bool showSumStatsFlag = FLAGS_sum;
const bool showLruStatsFlag = FLAGS_lru;
const bool showIcmpStatsFlag = FLAGS_icmp;
const bool listServicesFlag = FLAGS_l;
const bool clearAllFlag = FLAGS_C;
const std::string vipChangeFlags = FLAGS_vf;
const std::string realChangeFlags = FLAGS_rf;
FLAGS_logtostderr = 1;
std::string service{""};
int proto;
if (tcpServiceFlag != "") {
service = tcpServiceFlag;
proto = IPPROTO_TCP;
} else if (udpServiceFlag != "") {
service = udpServiceFlag;
proto = IPPROTO_UDP;
}
KatranSimpleClient client(FLAGS_katran_server, FLAGS_katran_port);
if (FLAGS_change_mac != "") {
client.changeMac(FLAGS_change_mac);
} else if (FLAGS_list_mac) {
client.getMac();
} else if (addServiceFlag) {
client.addOrModifyService(service, vipChangeFlags, proto, false, true);
} else if (listServicesFlag) {
client.list("", proto);
} else if (delServiceFlag) {
client.delService(service, proto);
} else if (editServiceFlag) {
client.addOrModifyService(
service, vipChangeFlags, proto, true, !FLAGS_unset);
} else if (addServerFlag || editServerFlag) {
client.updateServerForVip(
service, proto, realServerFlag, realWeightFlag, realChangeFlags, false);
} else if (delServerFlag) {
client.updateServerForVip(
service, proto, realServerFlag, realWeightFlag, realChangeFlags, true);
} else if (FLAGS_del_qm) {
if (FLAGS_quic_mapping == "") {
LOG(FATAL) << "quic_mapping is not specified.";
exit(1);
}
client.modifyQuicMappings(FLAGS_quic_mapping, true);
} else if (FLAGS_quic_mapping != "") {
client.modifyQuicMappings(FLAGS_quic_mapping, false);
} else if (FLAGS_list_qm) {
client.listQm();
} else if (clearAllFlag) {
client.clearAll();
} else if (FLAGS_new_hc != "") {
client.addHc(FLAGS_new_hc, FLAGS_somark);
} else if (FLAGS_del_hc) {
client.delHc(FLAGS_somark);
} else if (FLAGS_list_hc) {
client.listHc();
} else if (showStatsFlag) {
if (showSumStatsFlag) {
client.showSumStats();
} else if (showLruStatsFlag) {
client.showLruStats();
} else if (showIcmpStatsFlag) {
client.showIcmpStats();
} else {
client.showPerVipStats();
}
}
VLOG(3) << "KatranSimpleClient exiting...";
return 0;
}