Skip to content

Commit 54d279d

Browse files
ktfdavidrohr
authored andcommitted
DPL Proxies: add --sporadic-inputs / --sporadic-outputs option to proxies
1 parent d16c53c commit 54d279d

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

Framework/Utils/src/dpl-output-proxy.cxx

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@ void customize(std::vector<ConfigParamSpec>& workflowOptions)
3939
ConfigParamSpec{
4040
"output-proxy-method", VariantType::String, "bind", {"proxy socket method: bind, connect"}});
4141

42+
workflowOptions.push_back(
43+
ConfigParamSpec{
44+
"sporadic-inputs", VariantType::Bool, false, {"consider all the inputs as sporadic"}});
45+
4246
workflowOptions.push_back(
4347
ConfigParamSpec{
4448
"output-proxy-address", VariantType::String, "0.0.0.0", {"address to connect / bind to"}});
@@ -74,6 +78,7 @@ WorkflowSpec defineDataProcessing(ConfigContext const& config)
7478
auto processorName = config.options().get<std::string>("proxy-name");
7579
auto inputConfig = config.options().get<std::string>("dataspec");
7680
int defaultPort = config.options().get<int>("default-port");
81+
bool sporadicInputs = config.options().get<bool>("sporadic-inputs");
7782
auto defaultTransportConfig = config.options().get<std::string>("default-transport");
7883
if (defaultTransportConfig == "zeromq") {
7984
// nothing to do for the moment
@@ -87,6 +92,12 @@ WorkflowSpec defineDataProcessing(ConfigContext const& config)
8792
if (inputs.size() == 0) {
8893
throw std::runtime_error("invalid dataspec '" + inputConfig + "'");
8994
}
95+
// we need to set the lifetime of the inputs to sporadic if requested
96+
if (sporadicInputs) {
97+
for (auto& input : inputs) {
98+
input.lifetime = Lifetime::Sporadic;
99+
}
100+
}
90101

91102
// we build the default channel configuration from the binding of the first input
92103
// in order to have more than one we would need to possibility to have support for

Framework/Utils/src/raw-proxy.cxx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ void customize(std::vector<ConfigParamSpec>& workflowOptions)
3535
ConfigParamSpec{
3636
"inject-missing-data", VariantType::Bool, false, {"inject missing data according to dataspec if not found in the input"}});
3737

38+
workflowOptions.push_back(
39+
ConfigParamSpec{
40+
"sporadic-outputs", VariantType::Bool, false, {"consider all the outputs as sporadic"}});
41+
3842
workflowOptions.push_back(
3943
ConfigParamSpec{
4044
"print-input-sizes", VariantType::Int, 0, {"print statistics about sizes per input spec every n TFs"}});
@@ -52,16 +56,18 @@ void customize(std::vector<ConfigParamSpec>& workflowOptions)
5256

5357
WorkflowSpec defineDataProcessing(ConfigContext const& config)
5458
{
55-
std::string processorName = config.options().get<std::string>("proxy-name");
56-
std::string outputconfig = config.options().get<std::string>("dataspec");
59+
auto processorName = config.options().get<std::string>("proxy-name");
60+
auto outputconfig = config.options().get<std::string>("dataspec");
5761
bool injectMissingData = config.options().get<bool>("inject-missing-data");
58-
unsigned int printSizes = config.options().get<unsigned int>("print-input-sizes");
62+
bool sporadicOutputs = config.options().get<bool>("sporadic-outputs");
63+
auto printSizes = config.options().get<unsigned int>("print-input-sizes");
5964
bool throwOnUnmatched = config.options().get<bool>("throwOnUnmatched");
6065
uint64_t minSHM = std::stoul(config.options().get<std::string>("timeframes-shm-limit"));
6166
std::vector<InputSpec> matchers = select(outputconfig.c_str());
6267
Outputs readoutProxyOutput;
6368
for (auto const& matcher : matchers) {
6469
readoutProxyOutput.emplace_back(DataSpecUtils::asOutputSpec(matcher));
70+
readoutProxyOutput.back().lifetime = sporadicOutputs ? Lifetime::Sporadic : Lifetime::Timeframe;
6571
}
6672

6773
// we use the same specs as filters in the dpl adaptor

0 commit comments

Comments
 (0)