Project
Loading...
Searching...
No Matches
DataProcessingHelpers.h
Go to the documentation of this file.
1// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3// All rights not expressly granted are reserved.
4//
5// This software is distributed under the terms of the GNU General Public
6// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7//
8// In applying this license CERN does not waive the privileges and immunities
9// granted to it by virtue of its status as an Intergovernmental Organization
10// or submit itself to any jurisdiction.
11#ifndef O2_FRAMEWORK_DATAPROCESSINGHELPERS_H_
12#define O2_FRAMEWORK_DATAPROCESSINGHELPERS_H_
13
14#include <cstddef>
17#include <fairmq/FwdDecls.h>
18#include <vector>
19#include <span>
20
21namespace o2::framework
22{
23struct ServiceRegistryRef;
24struct ForwardChannelInfo;
25struct ForwardChannelState;
26struct OutputChannelInfo;
27struct OutputChannelSpec;
28struct OutputChannelState;
29struct ProcessingPolicies;
30struct DeviceSpec;
31struct FairMQDeviceProxy;
32struct MessageSet;
33struct ChannelIndex;
34enum struct StreamingState;
35enum struct TransitionHandlingState;
36
43 static void sendEndOfStream(ServiceRegistryRef const& ref, OutputChannelSpec const& channel);
45 static bool sendOldestPossibleTimeframe(ServiceRegistryRef const& ref, ForwardChannelInfo const& info, ForwardChannelState& state, size_t timeslice);
47 static bool sendOldestPossibleTimeframe(ServiceRegistryRef const& ref, OutputChannelInfo const& info, OutputChannelState& state, size_t timeslice);
49 static void broadcastOldestPossibleTimeslice(ServiceRegistryRef const& ref, size_t timeslice);
51 static void switchState(ServiceRegistryRef const& ref, StreamingState newState);
53 static bool hasOnlyGenerated(DeviceSpec const& spec);
57 static std::vector<fair::mq::Parts> routeForwardedMessageSet(FairMQDeviceProxy& proxy, std::vector<MessageSet>& currentSetOfInputs,
58 bool copy, bool consume);
60 static void routeForwardedMessages(FairMQDeviceProxy& proxy, std::span<fair::mq::MessagePtr>& currentSetOfInputs, std::vector<fair::mq::Parts>& forwardedParts,
61 bool copy, bool consume);
62
63 static void cleanForwardedMessages(std::span<fair::mq::MessagePtr>& currentSetOfInputs, bool consume);
64};
65} // namespace o2::framework
66#endif // O2_FRAMEWORK_DATAPROCESSINGHELPERS_H_
benchmark::State & state
Defining PrimaryVertex explicitly as messageable.
Generic helpers for DataProcessing releated functions.
static bool hasOnlyGenerated(DeviceSpec const &spec)
check if spec is a source devide
static TransitionHandlingState updateStateTransition(ServiceRegistryRef const &ref, ProcessingPolicies const &policies)
starts the EoS timers and returns the new TransitionHandlingState in case as new state is requested
static std::vector< fair::mq::Parts > routeForwardedMessageSet(FairMQDeviceProxy &proxy, std::vector< MessageSet > &currentSetOfInputs, bool copy, bool consume)
Helper to route messages for forwarding.
static void switchState(ServiceRegistryRef const &ref, StreamingState newState)
change the device StreamingState to newState
static void sendEndOfStream(ServiceRegistryRef const &ref, OutputChannelSpec const &channel)
static bool sendOldestPossibleTimeframe(ServiceRegistryRef const &ref, ForwardChannelInfo const &info, ForwardChannelState &state, size_t timeslice)
static void cleanForwardedMessages(std::span< fair::mq::MessagePtr > &currentSetOfInputs, bool consume)
static void broadcastOldestPossibleTimeslice(ServiceRegistryRef const &ref, size_t timeslice)
Broadcast the oldest possible timeslice to all channels in output.
static void routeForwardedMessages(FairMQDeviceProxy &proxy, std::span< fair::mq::MessagePtr > &currentSetOfInputs, std::vector< fair::mq::Parts > &forwardedParts, bool copy, bool consume)
Helper to route messages for forwarding.
Forward channel information.
Definition ChannelInfo.h:88
Output channel information.
Definition ChannelInfo.h:73