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/Data/RawEvent.hh"
6 #include "cetlib/compiler_macros.h"
7 #include "fhiclcpp/ParameterSet.h"
9 #include <unordered_map>
17 enum class FragmentDatasetMode : uint8_t
50 virtual void insertOne(Fragment
const& f) = 0;
65 virtual void insertHeader(detail::RawEventHeader
const& e) = 0;
72 virtual std::unordered_map<artdaq::Fragment::type_t, std::unique_ptr<artdaq::Fragments>>
readNextEvent() = 0;
80 virtual std::unique_ptr<artdaq::detail::RawEventHeader>
getEventHeader(artdaq::Fragment::sequence_id_t
const& seqID) = 0;
91 #ifndef EXTERN_C_FUNC_DECLARE_START
92 #define EXTERN_C_FUNC_DECLARE_START extern "C" {
95 #define DEFINE_ARTDAQ_DATASET_PLUGIN(klass) \
96 EXTERN_C_FUNC_DECLARE_START \
97 std::unique_ptr<artdaq::hdf5::FragmentDataset> make(fhicl::ParameterSet const& ps) \
99 return std::unique_ptr<artdaq::hdf5::FragmentDataset>(new klass(ps)); \
105 #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)
FragmentDataset(fhicl::ParameterSet const &ps, std::string mode)
FragmentDataset Constructor.
virtual void insertMany(Fragments const &fs)
Insert several Fragments into the Dataset (write them to the HDF5 file)
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.