12 #include <boost/asio.hpp>
13 #include <boost/scoped_ptr.hpp>
14 #include <boost/program_options.hpp>
19 namespace po = boost::program_options;
20 #include "configure.hpp"
27 boost::scoped_ptr<JControlHost>
m_ch;
29 mutable boost::asio::ip::udp::socket
m_input;
36 std::string
const&
name
37 , std::string
const&
server
57 virtual void actionInit(
int length,
const char* buffer) {}
63 std::string(buffer, length)
66 m_input.open(boost::asio::ip::udp::v4());
69 boost::asio::ip::udp::endpoint(
70 boost::asio::ip::udp::v4()
77 conf.get<std::string>(
"out_server_address")
78 , conf.get<
unsigned>(
"out_server_port")
95 assert(run_number >= 0);
127 static size_t const max_size = 10000;
128 static char buffer[max_size];
130 std::size_t
const size =
m_input.receive(
131 boost::asio::buffer(buffer, max_size)
144 int main(
int argc,
char* argv[])
146 std::string server(
"localhost");
147 std::string logger(
"localhost");
148 std::string client_name(
"MonRouter");
152 po::options_description desc(
"Options");
154 (
"help,h",
"Print this help and exit.")
155 (
"version,v",
"Print the version and exit.")
158 , po::value<std::string>(&server)->default_value(server)
159 ,
"Set the address of the SM server."
163 , po::value<std::string>(&logger)->default_value(logger)
164 ,
"Set the address of the logger server."
168 , po::value<std::string>(&client_name)->default_value(client_name)
169 ,
"Set the address of the client name."
173 , po::value<int>(&port)->required()
174 ,
"Set the UDP port to read data from"
178 , po::value<int>(&debug)->default_value(debug)
179 ,
"Set the debug level."
183 po::variables_map vm;
185 po::command_line_parser(argc, argv).
options(desc).run(),
189 if (vm.count(
"help")) {
190 std::cout << desc << std::endl;
194 if (vm.count(
"version")) {
200 }
catch (
const po::error& e) {
201 std::cerr <<
"MonRouter: Error: " << e.what() <<
'\n'
202 << desc << std::endl;
204 }
catch (
const std::runtime_error& e) {
205 std::cerr <<
"MonRouter: Error: " << e.what() <<
'\n'
206 << desc << std::endl;
int main(int argc, char *argv[])
JDAQStateMachine::ev_configure_event ev_configure
virtual void actionPause(int length, const char *buffer)
virtual void actionStart(int length, const char *buffer)
bool has(const int file_descriptor) const
Has file descriptor.
void set(const int file_descriptor)
Set file descriptor.
MonitorRouter(std::string const &name, std::string const &server, JLogger *logger, const int level, int port)
Interface for logging messages.
Message logging based on ControlHost.
virtual void actionReset(int length, const char *buffer)
virtual void actionRunning()
This method is repeatedly called when this client machine is in state Running and the clock interval ...
void replaceEvent(const JTag &oldTag, const JTag &newTag, JDAQEvent_t &event)
Replace tag of given event in event table.
JSharedPointer< JControlHost > server
message server
virtual void actionQuit(int length, const char *buffer)
void run()
Run as run control client following command messages via JNET::JControlHost.
virtual void actionEnter()
Interface methods for actions corresponding to state transitions.
boost::asio::io_service m_service
boost::property_tree::ptree parse(std::string str)
int getDetectorID() const
Get detector identifier.
virtual void actionSelect(const JFileDescriptorMask &mask)
Action method following last select call.
then usage $script[port]< option > nPossible options
boost::asio::ip::udp::socket m_input
Auxiliary class for method select.
void store(const std::string &file_name, const JDetector &detector)
Store detector to output file.
static const JNET::JTag RC_MONITORING_ROUTER
boost::scoped_ptr< JControlHost > m_ch
virtual void actionStop(int length, const char *buffer)
General purpose message reporting.
int getRunNumber() const
Get run number.
virtual void actionExit()
Control unit client base class.
virtual bool enter(const JArgs &args)
Enter the state machine.
JMessageLogger logger
message logger
static const JNET::JTag RC_CMD
virtual void setSelect(JFileDescriptorMask &mask) const
Set the file descriptor mask for the select call.
static const JNET::JTag IO_MONITORING_DATA
virtual void actionInit(int length, const char *buffer)
virtual void actionConfigure(int length, const char *buffer)
virtual void actionContinue(int length, const char *buffer)