11#ifndef O2_FRAMEWORK_DEVICESPECHELPERS_H_
12#define O2_FRAMEWORK_DEVICESPECHELPERS_H_
31#include <boost/program_options.hpp>
40struct InputChannelSpec;
41struct OutputChannelSpec;
50 std::vector<ChannelConfigurationPolicy>
const& channelPolicies,
51 std::vector<CompletionPolicy>
const& completionPolicies,
52 std::vector<DispatchPolicy>
const& dispatchPolicies,
53 std::vector<ResourcePolicy>
const& resourcePolicies,
54 std::vector<CallbacksPolicy>
const& callbacksPolicies,
55 std::vector<SendingPolicy>
const& sendingPolicy,
56 std::vector<ForwardingPolicy>
const& forwardingPolicies,
57 std::vector<DeviceSpec>& devices,
59 std::string
const& uniqueWorkflowId,
61 bool optimizeTopology =
false,
62 unsigned short resourcesMonitoringInterval = 0,
63 std::string
const& channelPrefix =
"",
69 std::vector<ChannelConfigurationPolicy>
const& channelPolicies,
70 std::vector<CompletionPolicy>
const& completionPolicies,
71 std::vector<CallbacksPolicy>
const& callbacksPolicies,
72 std::vector<DeviceSpec>& devices,
74 std::string
const& uniqueWorkflowId,
76 bool optimizeTopology =
false,
77 unsigned short resourcesMonitoringInterval = 0,
78 std::string
const& channelPrefix =
"",
86 dispatchPolicies, resourcePolicies, callbacksPolicies,
87 sendingPolicies, forwardingPolicies, devices,
88 resourceManager, uniqueWorkflowId, configContext, optimizeTopology,
89 resourcesMonitoringInterval, channelPrefix, overrideServices);
105 char const*
name,
char const* defaultValue);
114 std::function<
long long()> defaultValueCallback,
115 long long startValue,
116 std::function<
long long(
long long,
long long)> bestValue);
126 unsigned short driverPort,
128 std::vector<DataProcessorInfo>
const& processorInfos,
129 std::vector<DeviceSpec>
const& deviceSpecs,
130 std::vector<DeviceExecution>& deviceExecutions,
131 std::vector<DeviceControl>& deviceControls,
132 std::vector<ConfigParamSpec>
const& detectedOptions,
133 std::string
const& uniqueWorkflowId);
145 std::vector<DeviceSpec>& devices,
146 std::vector<DeviceId>& deviceIndex,
147 std::vector<DeviceConnectionId>& connections,
149 const std::vector<size_t>& outEdgeIndex,
150 const std::vector<DeviceConnectionEdge>& logicalEdges,
151 const std::vector<EdgeAction>& actions,
153 const std::vector<OutputSpec>& outputs,
154 std::vector<ChannelConfigurationPolicy>
const& channelPolicies,
155 std::vector<SendingPolicy>
const& sendingPolicies,
156 std::vector<ForwardingPolicy>
const& forwardingPolicies,
157 std::string
const& channelPrefix,
166 std::vector<DeviceSpec>& devices,
167 std::vector<DeviceId>& deviceIndex,
168 const std::vector<DeviceConnectionId>& connections,
169 ResourceManager& resourceManager,
170 const std::vector<size_t>& inEdgeIndex,
171 const std::vector<DeviceConnectionEdge>& logicalEdges,
172 const std::vector<EdgeAction>& actions,
174 const std::vector<LogicalForwardInfo>& availableForwardsInfo,
175 std::vector<ChannelConfigurationPolicy>
const& channelPolicies,
176 std::string
const& channelPrefix,
177 ComputingOffer
const& defaultOffer,
184 static bool hasLabel(DeviceSpec
const& spec,
char const*
label);
GLuint const GLchar * name
GLuint GLsizei const GLchar * label
Defining PrimaryVertex explicitly as messageable.
std::vector< OverrideServiceSpec > OverrideServiceSpecs
std::vector< DataProcessorSpec > WorkflowSpec
o2::framework::WorkflowSpec WorkflowSpec
static void processOutEdgeActions(ConfigContext const &configContext, std::vector< DeviceSpec > &devices, std::vector< DeviceId > &deviceIndex, std::vector< DeviceConnectionId > &connections, ResourceManager &resourceManager, const std::vector< size_t > &outEdgeIndex, const std::vector< DeviceConnectionEdge > &logicalEdges, const std::vector< EdgeAction > &actions, const WorkflowSpec &workflow, const std::vector< OutputSpec > &outputs, std::vector< ChannelConfigurationPolicy > const &channelPolicies, std::vector< SendingPolicy > const &sendingPolicies, std::vector< ForwardingPolicy > const &forwardingPolicies, std::string const &channelPrefix, ComputingOffer const &defaultOffer, OverrideServiceSpecs const &overrideServices={})
static void processInEdgeActions(std::vector< DeviceSpec > &devices, std::vector< DeviceId > &deviceIndex, const std::vector< DeviceConnectionId > &connections, ResourceManager &resourceManager, const std::vector< size_t > &inEdgeIndex, const std::vector< DeviceConnectionEdge > &logicalEdges, const std::vector< EdgeAction > &actions, const WorkflowSpec &workflow, const std::vector< LogicalForwardInfo > &availableForwardsInfo, std::vector< ChannelConfigurationPolicy > const &channelPolicies, std::string const &channelPrefix, ComputingOffer const &defaultOffer, OverrideServiceSpecs const &overrideServices={})
static void dataProcessorSpecs2DeviceSpecs(const WorkflowSpec &workflow, std::vector< ChannelConfigurationPolicy > const &channelPolicies, std::vector< CompletionPolicy > const &completionPolicies, std::vector< CallbacksPolicy > const &callbacksPolicies, std::vector< DeviceSpec > &devices, ResourceManager &resourceManager, std::string const &uniqueWorkflowId, ConfigContext const &configContext, bool optimizeTopology=false, unsigned short resourcesMonitoringInterval=0, std::string const &channelPrefix="", OverrideServiceSpecs const &overrideServices={})
static void validate(WorkflowSpec const &workflow)
static boost::program_options::options_description getForwardedDeviceOptions()
define the options which are forwarded to every child
static std::string inputChannel2String(const InputChannelSpec &channel)
Helper to provide the channel configuration string for an input channel.
static std::string reworkTimeslicePlaceholder(std::string const &str, DeviceSpec const &spec)
static void prepareArguments(bool defaultQuiet, bool defaultStopped, bool intereactive, unsigned short driverPort, DriverConfig const &driverConfig, std::vector< DataProcessorInfo > const &processorInfos, std::vector< DeviceSpec > const &deviceSpecs, std::vector< DeviceExecution > &deviceExecutions, std::vector< DeviceControl > &deviceControls, std::vector< ConfigParamSpec > const &detectedOptions, std::string const &uniqueWorkflowId)
static void reworkShmSegmentSize(std::vector< DataProcessorInfo > &infos)
static void reworkHomogeneousOption(std::vector< DataProcessorInfo > &infos, char const *name, char const *defaultValue)
static void reworkIntegerOption(std::vector< DataProcessorInfo > &infos, char const *name, std::function< long long()> defaultValueCallback, long long startValue, std::function< long long(long long, long long)> bestValue)
static bool hasLabel(DeviceSpec const &spec, char const *label)
static std::string outputChannel2String(const OutputChannelSpec &channel)
Helper to provide the channel configuration string for an output channel.
static void dataProcessorSpecs2DeviceSpecs(const WorkflowSpec &workflow, std::vector< ChannelConfigurationPolicy > const &channelPolicies, std::vector< CompletionPolicy > const &completionPolicies, std::vector< DispatchPolicy > const &dispatchPolicies, std::vector< ResourcePolicy > const &resourcePolicies, std::vector< CallbacksPolicy > const &callbacksPolicies, std::vector< SendingPolicy > const &sendingPolicy, std::vector< ForwardingPolicy > const &forwardingPolicies, std::vector< DeviceSpec > &devices, ResourceManager &resourceManager, std::string const &uniqueWorkflowId, ConfigContext const &configContext, bool optimizeTopology=false, unsigned short resourcesMonitoringInterval=0, std::string const &channelPrefix="", OverrideServiceSpecs const &overrideServices={})
static std::vector< DispatchPolicy > createDefaultPolicies()
Helper to create the default configuration.
static std::vector< ForwardingPolicy > createDefaultPolicies()
static std::vector< ResourcePolicy > createDefaultPolicies()
static std::vector< SendingPolicy > createDefaultPolicies()