31 peer(
senf::MACAddress::None),
32 label((rand() % 0xffff) << 4),
37 reportingInterval(
senf::ClockService::milliseconds(1000)),
38 duration(
senf::ClockService::seconds(0)),
47 initDir.
add(
"verbose", fty::Variable(verbose));
49 initDir.
add(
"iface", fty::Variable(iface));
50 initDir.
add(
"frequency", fty::Variable(frequency));
51 initDir.
add(
"ht40", fty::Variable(ht40));
53 initDir.
add(
"peer", fty::Variable(peer));
54 initDir.
add(
"label", fty::Variable(label));
56 initDir.
add(
"txBuf", fty::Variable(txBuf));
57 initDir.
add(
"qlen", fty::Variable(qlen));
58 initDir.
add(
"maxBurst", fty::Variable(maxBurst));
60 initDir.
add(
"bitrate", fty::Variable(
bitrate));
62 initDir.
add(
"reporting-interval", fty::Variable( reportingInterval)
63 .
parser(senf::parseClockServiceInterval));
64 initDir.
add(
"duration", fty::Variable(duration)
65 .
parser(senf::parseClockServiceInterval));
67 initDir.
add(
"consolePort", fty::Variable(consolePort));
70 enableHighresTimers();
77 senf::console::DirectoryNode::ChildrenRange::iterator it;
78 for (it = range.begin(); it != range.end(); it++) {
79 std::cerr << it->first <<
": ";
80 it->second->help( std::cout);
88 std::cerr <<
"1.0" << std::endl;
95 if (senf::scheduler::haveScalableHiresTimers())
99 senf::scheduler::hiresTimers();
105 struct sched_param param;
106 param.sched_priority = sched_get_priority_max(SCHED_FIFO);
107 if (sched_setscheduler(0, SCHED_FIFO, ¶m) != 0) {
110 mlockall(MCL_FUTURE);
118 namespace kw = senf::console::kw;
125 cmdlineOptions.
parse( initDir);
127 std::cerr << e.message() << std::endl;
131 std::cerr <<
"Exception occurred during configuration parsing: "
unspecified_keyword_type parser
StatsDataCollectorKernel bitrate
std::string backtrace() const
boost::iterator_range< ChildMap::const_iterator > ChildrenRange
NodeType & add(std::string const &name, boost::shared_ptr< NodeType > node)
bool parse(int argc, char const *argv[])
void enableHighresTimers()
std::string message() const
void enableRealtimeScheduling()