From 19b3347ade40e4969837e3323d2a087455bf31ac Mon Sep 17 00:00:00 2001 From: NicolasWinckler Date: Wed, 4 Nov 2015 13:01:10 +0100 Subject: [PATCH] - rename tutorial7 and move it to example/MQ/GenericDevices - rename functions of MQ examples and change directory structures - move FairMQUnpacker.h from example/MQ/LmdSampler to base/MQ/devices - add runSimpleMQStateMachine.h helper function in fairmq/tools --- fairmq/tools/runSimpleMQStateMachine.h | 74 ++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 fairmq/tools/runSimpleMQStateMachine.h diff --git a/fairmq/tools/runSimpleMQStateMachine.h b/fairmq/tools/runSimpleMQStateMachine.h new file mode 100644 index 00000000..6babde09 --- /dev/null +++ b/fairmq/tools/runSimpleMQStateMachine.h @@ -0,0 +1,74 @@ +/* + * File: runSimpleMQStateMachine.h + * Author: winckler + * + * Created on July 2, 2015, 2:07 PM + */ + +#ifndef RUNSIMPLEMQSTATEMACHINE_H +#define RUNSIMPLEMQSTATEMACHINE_H + +/// std +#include +#include +#include + +/// boost +#include "boost/program_options.hpp" + +/// ZMQ/nmsg (in FairSoft) +#ifdef NANOMSG +#include "nanomsg/FairMQTransportFactoryNN.h" +#else +#include "zeromq/FairMQTransportFactoryZMQ.h" +#endif + +/// FairRoot - FairMQ +#include "FairMQLogger.h" +#include "FairMQParser.h" +#include "FairMQProgOptions.h" + + + +// template function that take any device, +// and run a simple MQ state machine configured from a JSON file +template +inline int runStateMachine(TMQDevice& device, FairMQProgOptions& config) +{ + device.CatchSignals(); + std::string jsonfile = config.GetValue("config-json-file"); + std::string id = config.GetValue("id"); + int ioThreads = config.GetValue("io-threads"); + + config.UserParser(jsonfile, id); + + device.fChannels = config.GetFairMQMap(); + + device.SetProperty(TMQDevice::Id, id); + device.SetProperty(TMQDevice::NumIoThreads, ioThreads); + + LOG(INFO) << "PID: " << getpid(); + +#ifdef NANOMSG + FairMQTransportFactory* transportFactory = new FairMQTransportFactoryNN(); +#else + FairMQTransportFactory* transportFactory = new FairMQTransportFactoryZMQ(); +#endif + + device.SetTransport(transportFactory); + + device.ChangeState(TMQDevice::INIT_DEVICE); + device.WaitForEndOfState(TMQDevice::INIT_DEVICE); + + device.ChangeState(TMQDevice::INIT_TASK); + device.WaitForEndOfState(TMQDevice::INIT_TASK); + + device.ChangeState(TMQDevice::RUN); + device.InteractiveStateLoop(); + + return 0; +} + + +#endif /* RUNSIMPLEMQSTATEMACHINE_H */ +