explicit NdnTlvFileSender(char* programName) : m_programName(programName) , m_hasError(false) , m_freshnessPeriod(getMinimumFreshnessPeriod()) , m_face(m_ioService) { }
int main(int argc, char* argv[]) { Options options; options.freshnessPeriod = getMinimumFreshnessPeriod(); options.shouldLimitSatisfied = false; options.nMaxPings = 0; options.shouldPrintTimestamp = false; options.payloadSize = 0; namespace po = boost::program_options; po::options_description visibleOptDesc("Allowed options"); visibleOptDesc.add_options() ("help,h", "print this message and exit") ("version,V", "display version and exit") ("freshness,x", po::value<int>(), ("set freshness period in milliseconds (minimum " + std::to_string(getMinimumFreshnessPeriod().count()) + " ms)").c_str()) ("satisfy,p", po::value<int>(&options.nMaxPings), "set maximum number of pings to be satisfied") ("timestamp,t", "log timestamp with responses") ("size,s", po::value<int>(&options.payloadSize), "specify size of response payload") ; po::options_description hiddenOptDesc("Hidden options"); hiddenOptDesc.add_options() ("prefix", po::value<std::string>(), "prefix to register") ; po::options_description optDesc("Allowed options"); optDesc.add(visibleOptDesc).add(hiddenOptDesc); try { po::positional_options_description optPos; optPos.add("prefix", -1); po::variables_map optVm; po::store(po::command_line_parser(argc, argv).options(optDesc).positional(optPos).run(), optVm); po::notify(optVm); if (optVm.count("help") > 0) { usage(visibleOptDesc); } if (optVm.count("version") > 0) { std::cout << "ndnpingserver " << tools::VERSION << std::endl; exit(0); } if (optVm.count("prefix") > 0) { options.prefix = Name(optVm["prefix"].as<std::string>()); } else { std::cerr << "ERROR: No prefix specified" << std::endl; usage(visibleOptDesc); } if (optVm.count("freshness") > 0) { options.freshnessPeriod = time::milliseconds(optVm["freshness"].as<int>()); if (options.freshnessPeriod.count() < getMinimumFreshnessPeriod().count()) { std::cerr << "ERROR: Specified FreshnessPeriod is less than the minimum " << getMinimumFreshnessPeriod() << std::endl; usage(visibleOptDesc); } } if (optVm.count("satisfy") > 0) { options.shouldLimitSatisfied = true; if (options.nMaxPings < 1) { std::cerr << "ERROR: Maximum number of pings to satisfy must be greater than 0" << std::endl; usage(visibleOptDesc); } } if (optVm.count("timestamp") > 0) { options.shouldPrintTimestamp = true; } if (optVm.count("size") > 0) { if (options.payloadSize < 0) { std::cerr << "ERROR: Payload size must be greater than or equal to 0" << std::endl; usage(visibleOptDesc); } } } catch (const po::error& e) { std::cerr << "ERROR: " << e.what() << std::endl; usage(visibleOptDesc); } std::cout << "PING SERVER " << options.prefix << std::endl; return Runner(options).run(); }