X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Console%2FtestServer.cc;h=fe42969cf94a8ee1cdfce41a28105fdc8f808ef9;hb=748363b235c4651b3992cc291a95dc2e18e45724;hp=b55ca1b16ce3b5fcbfd969ffd3120ce973a592b9;hpb=9ff18548815d10140e83fba6ed2d573fe556c346;p=senf.git diff --git a/Console/testServer.cc b/Console/testServer.cc index b55ca1b..fe42969 100644 --- a/Console/testServer.cc +++ b/Console/testServer.cc @@ -30,6 +30,7 @@ #include #include "Server.hh" #include "Node.hh" +#include "ScopedDirectory.hh" #include "../Scheduler/Scheduler.hh" #include "../Utils/Logger/SenfLog.hh" @@ -38,35 +39,69 @@ ///////////////////////////////cc.p//////////////////////////////////////// namespace { - struct MyCommand : public senf::console::CommandNode + + void fn(std::ostream & output, senf::console::ParseCommandInfo const & command) { + typedef senf::console::ParseCommandInfo::ArgumentsRange::iterator iterator; + iterator i (command.arguments().begin()); + iterator i_end (command.arguments().end()); + for (; i != i_end; ++i) { + iterator::value_type::iterator j (i->begin()); + iterator::value_type::iterator j_end (i->end()); + for (; j != j_end; ++j) + output << j->value() << ' '; + } + output << "\n"; + } + + struct TestObject { - MyCommand(std::string name) : senf::console::CommandNode(name) {} - void operator()(std::ostream & output, - senf::console::ParseCommandInfo::ArgumentsRange const & arguments) { - senf::console::ParseCommandInfo::argument_iterator i (arguments.begin()); - senf::console::ParseCommandInfo::argument_iterator i_end (arguments.end()); - for (; i != i_end; ++i) { - senf::console::ParseCommandInfo::token_iterator j (i->begin()); - senf::console::ParseCommandInfo::token_iterator j_end (i->end()); - for (; j != j_end; ++j) - output << j->value() << ' '; - } - output << "\n"; + senf::console::ScopedDirectory dir; + + TestObject() : dir(this) { + dir.add("blub", &TestObject::blub) + .doc("Example of a member function"); + } + + void blub(std::ostream & output, senf::console::ParseCommandInfo const &) { + output << "blub\n"; } }; + + void shutdownServer(std::ostream &, senf::console::ParseCommandInfo const &) + { + senf::Scheduler::instance().terminate(); + throw senf::console::Executor::ExitException(); + } + } int main(int, char const **) { senf::log::ConsoleTarget::instance().route< senf::SenfLog, senf::log::NOTICE >(); - senf::console::root().mkdir("network").mkdir("eth0"); - senf::console::root().mkdir("server"); + senf::console::root() + .doc("This is the console test application"); + senf::console::root() + .mkdir("network") + .doc("Network related settings"); + senf::console::root()["network"] + .mkdir("eth0") + .doc("Ethernet device eth0"); + senf::console::root() + .mkdir("server"); + senf::console::root()["server"] + .add("shutdown", &shutdownServer) + .doc("Terminate server application"); + senf::console::root()["network"] + .add("route", &fn) + .doc("Example of a directly registered function"); - senf::console::root()["network"].add( - std::auto_ptr(new MyCommand("route"))); + TestObject test; + senf::console::root() + .add("testob", test.dir) + .doc("Example of an instance directory"); - senf::console::Server::start( senf::INet4SocketAddress("127.0.0.1:23232") ) + senf::console::Server::start( senf::INet4SocketAddress("0.0.0.0:23232") ) .name("testServer"); senf::Scheduler::instance().process();