4040#include " Framework/DataProcessorInfo.h"
4141#include " Framework/DriverInfo.h"
4242#include " Framework/DriverControl.h"
43+ #include " Framework/CommandInfo.h"
4344#include " DriverServerContext.h"
4445#include " ControlServiceHelpers.h"
4546#include " HTTPParser.h"
@@ -1097,6 +1098,7 @@ void single_step_callback(uv_timer_s* ctx)
10971098int runStateMachine (DataProcessorSpecs const & workflow,
10981099 WorkflowInfo const & workflowInfo,
10991100 DataProcessorInfos const & previousDataProcessorInfos,
1101+ CommandInfo const & commandInfo,
11001102 DriverControl& driverControl,
11011103 DriverInfo& driverInfo,
11021104 std::vector<DeviceMetricsInfo>& metricsInfos,
@@ -1491,7 +1493,7 @@ int runStateMachine(DataProcessorSpecs const& workflow,
14911493 // restart the data processors which need to be restarted.
14921494 LOG (INFO) << " Redeployment of configuration asked." ;
14931495 std::ostringstream forwardedStdin;
1494- WorkflowSerializationHelpers::dump (forwardedStdin, workflow, dataProcessorInfos);
1496+ WorkflowSerializationHelpers::dump (forwardedStdin, workflow, dataProcessorInfos, commandInfo );
14951497 infos.reserve (deviceSpecs.size ());
14961498
14971499 // This is guaranteed to be a single CPU.
@@ -1673,7 +1675,7 @@ int runStateMachine(DataProcessorSpecs const& workflow,
16731675 }
16741676 case DriverState::PERFORM_CALLBACKS:
16751677 for (auto & callback : driverControl.callbacks ) {
1676- callback (workflow, deviceSpecs, deviceExecutions, dataProcessorInfos);
1678+ callback (workflow, deviceSpecs, deviceExecutions, dataProcessorInfos, commandInfo );
16771679 }
16781680 driverControl.callbacks .clear ();
16791681 break ;
@@ -1844,7 +1846,8 @@ void initialiseDriverControl(bpo::variables_map const& varmap,
18441846 control.callbacks = {[](WorkflowSpec const & workflow,
18451847 DeviceSpecs const & specs,
18461848 DeviceExecutions const &,
1847- DataProcessorInfos&) {
1849+ DataProcessorInfos&,
1850+ CommandInfo const &) {
18481851 GraphvizHelpers::dumpDeviceSpec2Graphviz (std::cout, specs);
18491852 }};
18501853 control.forcedTransitions = {
@@ -1862,7 +1865,8 @@ void initialiseDriverControl(bpo::variables_map const& varmap,
18621865 control.callbacks = {[](WorkflowSpec const & workflow,
18631866 DeviceSpecs const & specs,
18641867 DeviceExecutions const & executions,
1865- DataProcessorInfos&) {
1868+ DataProcessorInfos&,
1869+ CommandInfo const &) {
18661870 dumpDeviceSpec2DDS (std::cout, specs, executions);
18671871 }};
18681872 control.forcedTransitions = {
@@ -1877,8 +1881,9 @@ void initialiseDriverControl(bpo::variables_map const& varmap,
18771881 (WorkflowSpec const & workflow,
18781882 DeviceSpecs const & specs,
18791883 DeviceExecutions const & executions,
1880- DataProcessorInfos&) {
1881- dumpDeviceSpec2O2Control (workflowName, specs, executions);
1884+ DataProcessorInfos&,
1885+ CommandInfo const & commandInfo) {
1886+ dumpDeviceSpec2O2Control (workflowName, specs, executions, commandInfo);
18821887 }};
18831888 control.forcedTransitions = {
18841889 DriverState::EXIT, //
@@ -1903,14 +1908,15 @@ void initialiseDriverControl(bpo::variables_map const& varmap,
19031908 control.callbacks = {[filename = varmap[" dump-workflow-file" ].as <std::string>()](WorkflowSpec const & workflow,
19041909 DeviceSpecs const devices,
19051910 DeviceExecutions const &,
1906- DataProcessorInfos& dataProcessorInfos) {
1911+ DataProcessorInfos& dataProcessorInfos,
1912+ CommandInfo const & commandInfo) {
19071913 if (filename == " -" ) {
1908- WorkflowSerializationHelpers::dump (std::cout, workflow, dataProcessorInfos);
1914+ WorkflowSerializationHelpers::dump (std::cout, workflow, dataProcessorInfos, commandInfo );
19091915 // FIXME: this is to avoid trailing garbage..
19101916 exit (0 );
19111917 } else {
19121918 std::ofstream output (filename);
1913- WorkflowSerializationHelpers::dump (output, workflow, dataProcessorInfos);
1919+ WorkflowSerializationHelpers::dump (output, workflow, dataProcessorInfos, commandInfo );
19141920 }
19151921 }};
19161922 control.forcedTransitions = {
@@ -2078,9 +2084,10 @@ int doMain(int argc, char** argv, o2::framework::WorkflowSpec const& workflow,
20782084 }
20792085
20802086 std::vector<DataProcessorInfo> dataProcessorInfos;
2087+ CommandInfo commandInfo{};
20812088 if (isatty (STDIN_FILENO) == false ) {
20822089 std::vector<DataProcessorSpec> importedWorkflow;
2083- WorkflowSerializationHelpers::import (std::cin, importedWorkflow, dataProcessorInfos);
2090+ WorkflowSerializationHelpers::import (std::cin, importedWorkflow, dataProcessorInfos, commandInfo );
20842091
20852092 size_t workflowHashB = 0 ;
20862093 for (auto & dp : importedWorkflow) {
@@ -2260,6 +2267,8 @@ int doMain(int argc, char** argv, o2::framework::WorkflowSpec const& workflow,
22602267 driverInfo.processorInfo = dataProcessorInfos;
22612268 driverInfo.configContext = &configContext;
22622269
2270+ commandInfo.merge (CommandInfo (argc, argv));
2271+
22632272 std::string frameworkId;
22642273 // If the id is set, this means this is a device,
22652274 // otherwise this is the driver.
@@ -2274,6 +2283,7 @@ int doMain(int argc, char** argv, o2::framework::WorkflowSpec const& workflow,
22742283 return runStateMachine (physicalWorkflow,
22752284 currentWorkflow,
22762285 dataProcessorInfos,
2286+ commandInfo,
22772287 driverControl,
22782288 driverInfo,
22792289 gDeviceMetricsInfos ,
0 commit comments