1 #ifndef artdaq_demo_hdf5_hdf5_FragmentDataset_hh
2 #define artdaq_demo_hdf5_hdf5_FragmentDataset_hh 1
4 #include "artdaq-core/Data/Fragment.hh"
5 #include "artdaq-core/Plugins/FragmentNameHelper.hh"
6 #include "artdaq-core/Data/RawEvent.hh"
7 #include "cetlib/compiler_macros.h"
8 #include "fhiclcpp/ParameterSet.h"
10 #include <unordered_map>
18 enum class FragmentDatasetMode : uint8_t
40 FragmentDataset(fhicl::ParameterSet
const& ps,
const std::string& mode);
51 virtual void insertOne(Fragment
const& f) = 0;
66 virtual void insertHeader(detail::RawEventHeader
const& e) = 0;
73 virtual std::unordered_map<artdaq::Fragment::type_t, std::unique_ptr<artdaq::Fragments>>
readNextEvent() = 0;
81 virtual std::unique_ptr<artdaq::detail::RawEventHeader>
getEventHeader(artdaq::Fragment::sequence_id_t
const& seqID) = 0;
99 #ifndef EXTERN_C_FUNC_DECLARE_START
100 #define EXTERN_C_FUNC_DECLARE_START extern "C" {
103 #define DEFINE_ARTDAQ_DATASET_PLUGIN(klass) \
104 EXTERN_C_FUNC_DECLARE_START \
105 std::unique_ptr<artdaq::hdf5::FragmentDataset> make(fhicl::ParameterSet const& ps) \
107 return std::unique_ptr<artdaq::hdf5::FragmentDataset>(new klass(ps)); \
113 #endif // artdaq_demo_hdf5_hdf5_FragmentDataset_hh
virtual void insertOne(Fragment const &f)=0
Insert a Fragment into the Dataset (write it to the HDF5 file)
virtual void insertHeader(detail::RawEventHeader const &e)=0
Insert a RawEventHeader into the Dataset (write it to the HDF5 file)
virtual void insertMany(Fragments const &fs)
Insert several Fragments into the Dataset (write them to the HDF5 file)
FragmentDataset(fhicl::ParameterSet const &ps, const std::string &mode)
FragmentDataset Constructor.
FragmentDatasetMode mode_
Mode of this FragmentDataset, either FragmentDatasetMode::Write or FragmentDatasetMode::Read.
virtual std::unique_ptr< artdaq::detail::RawEventHeader > getEventHeader(artdaq::Fragment::sequence_id_t const &seqID)=0
Read a RawEventHeader from the Dataset (HDF5 file)
Base class that defines methods for reading and writing to HDF5 files via various implementation plug...
virtual std::unordered_map< artdaq::Fragment::type_t, std::unique_ptr< artdaq::Fragments > > readNextEvent()=0
Read the next event from the Dataset (HDF5 file)
virtual ~FragmentDataset() noexcept=default
FragmentDataset default virtual destructor.
std::shared_ptr< artdaq::FragmentNameHelper > nameHelper_
FragmentNameHelper used to translate between Fragment Type and string instance names.