1212
1313#include " Framework/ChannelConfigurationPolicy.h"
1414#include " Framework/CompletionPolicy.h"
15+ #include " Framework/DispatchPolicy.h"
1516#include " Framework/ConfigParamsHelper.h"
1617#include " Framework/DataProcessorSpec.h"
1718#include " Framework/WorkflowSpec.h"
@@ -68,6 +69,7 @@ o2::framework::WorkflowSpec defineDataProcessing(o2::framework::ConfigContext co
6869void defaultConfiguration (std::vector<o2::framework::ChannelConfigurationPolicy>& channelPolicies) {}
6970void defaultConfiguration (std::vector<o2::framework::ConfigParamSpec> &globalWorkflowOptions) {}
7071void defaultConfiguration (std::vector<o2::framework::CompletionPolicy> &completionPolicies) {}
72+ void defaultConfiguration (std::vector<o2::framework::DispatchPolicy>& dispatchPolicies) {}
7173void defaultConfiguration (o2::framework::OnWorkflowTerminationHook& hook)
7274{
7375 hook = [](const char *) {};
@@ -91,9 +93,10 @@ struct UserCustomizationsHelper {
9193// This comes from the framework itself. This way we avoid code duplication.
9294int doMain (int argc, char ** argv, o2::framework::WorkflowSpec const & specs,
9395 std::vector<o2::framework::ChannelConfigurationPolicy> const & channelPolicies,
94- std::vector<o2::framework::CompletionPolicy> const &completionPolicies,
95- std::vector<o2::framework::ConfigParamSpec> const &workflowOptions,
96- o2::framework::ConfigContext &configContext);
96+ std::vector<o2::framework::CompletionPolicy> const & completionPolicies,
97+ std::vector<o2::framework::DispatchPolicy> const & dispatchPolicies,
98+ std::vector<o2::framework::ConfigParamSpec> const & workflowOptions,
99+ o2::framework::ConfigContext& configContext);
97100
98101int main (int argc, char ** argv)
99102{
@@ -118,11 +121,16 @@ int main(int argc, char** argv)
118121 auto defaultCompletionPolicies = CompletionPolicy::createDefaultPolicies ();
119122 completionPolicies.insert (std::end (completionPolicies), std::begin (defaultCompletionPolicies), std::end (defaultCompletionPolicies));
120123
124+ std::vector<DispatchPolicy> dispatchPolicies;
125+ UserCustomizationsHelper::userDefinedCustomization (dispatchPolicies, 0 );
126+ auto defaultDispatchPolicies = DispatchPolicy::createDefaultPolicies ();
127+ dispatchPolicies.insert (std::end (dispatchPolicies), std::begin (defaultDispatchPolicies), std::end (defaultDispatchPolicies));
128+
121129 std::unique_ptr<ParamRetriever> retriever{ new BoostOptionsRetriever (workflowOptions, true , argc, argv) };
122130 ConfigParamRegistry workflowOptionsRegistry (std::move (retriever));
123131 ConfigContext configContext{ workflowOptionsRegistry };
124132 o2::framework::WorkflowSpec specs = defineDataProcessing (configContext);
125- result = doMain (argc, argv, specs, channelPolicies, completionPolicies, workflowOptions, configContext);
133+ result = doMain (argc, argv, specs, channelPolicies, completionPolicies, dispatchPolicies, workflowOptions, configContext);
126134 } catch (std::exception const & error) {
127135 LOG (ERROR) << " error while setting up workflow: " << error.what ();
128136 } catch (...) {
0 commit comments