diff --git a/fairmq/tools/runSimpleMQStateMachine.h b/fairmq/tools/runSimpleMQStateMachine.h index 6babde09..712fd706 100644 --- a/fairmq/tools/runSimpleMQStateMachine.h +++ b/fairmq/tools/runSimpleMQStateMachine.h @@ -69,6 +69,51 @@ inline int runStateMachine(TMQDevice& device, FairMQProgOptions& config) return 0; } +template +inline int runNonInteractiveStateMachine(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.WaitForEndOfState(TMQDevice::RUN); + + device.ChangeState(TMQDevice::RESET_TASK); + device.WaitForEndOfState(TMQDevice::RESET_TASK); + + device.ChangeState(TMQDevice::RESET_DEVICE); + device.WaitForEndOfState(TMQDevice::RESET_DEVICE); + + device.ChangeState(TMQDevice::END); + + return 0; +} + #endif /* RUNSIMPLEMQSTATEMACHINE_H */