int main()

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;
}