6 \brief main non-inline non-template implementation */
12 #include <boost/algorithm/string/predicate.hpp>
13 #include <senf/Utils/Daemon.hh>
14 #include <senf/Utils/Logger/SenfLog.hh>
15 #include "UDPForwarder.hh"
19 ///////////////////////////////cc.p////////////////////////////////////////
21 class UDPForwarderDaemon : public senf::Daemon
23 SENF_LOG_CLASS_AREA();
28 static void terminate(siginfo_t const &);
31 prefix_ void UDPForwarderDaemon::configure()
33 pidFile("udpforward.pid");
34 consoleLog("udpforward.log");
36 senf::Daemon::configure();
39 prefix_ void UDPForwarderDaemon::main()
45 std::cerr << "Invalid number of arguments\n"
46 << "Usage: " << argv()[0] << " <listen port> <forward port> <target>\n";
50 senf::log::ConsoleTarget::instance().route<senf::log::VERBOSE>();
52 SENF_LOG(("udpforwarder starting"));
54 senf::INet4SocketAddress listenPort (argv()[1]);
55 senf::INet4SocketAddress targetPort (argv()[2]);
57 udpforward::UDPForwarder forwarder ( listenPort, targetPort );
59 senf::scheduler::SignalEvent sigintEvent (SIGINT, &terminate);
60 senf::scheduler::SignalEvent sigtermEvent (SIGTERM, &terminate);
64 senf::scheduler::process();
66 SENF_LOG(("signal received. Terminating."));
68 catch (std::exception & ex) {
69 SENF_LOG((senf::log::FATAL)(ex.what() << "\n" "terminating unexpectedly."));
74 prefix_ void UDPForwarderDaemon::terminate(siginfo_t const &)
76 senf::scheduler::terminate();
79 SENF_DAEMON_MAIN(UDPForwarderDaemon);
81 ///////////////////////////////cc.e////////////////////////////////////////
89 // indent-tabs-mode: nil
90 // compile-command: "scons"