LCOV - code coverage report
Current view: top level - artdaq/ArtModules - TransferOutputReliable_module.cc (source / functions) Coverage Total Hit
Test: artdaq.info.cleaned Lines: 0.0 % 26 0
Test Date: 2025-09-04 00:45:34 Functions: 0.0 % 16 0

            Line data    Source code
       1              : #include "TRACE/tracemf.h"
       2              : #define TRACE_NAME "TransferOutputReliable"
       3              : #include "artdaq/ArtModules/ArtdaqOutput.hh"
       4              : 
       5              : #include <csignal>
       6              : #include "art/Framework/Core/ModuleMacros.h"
       7              : #include "artdaq/DAQdata/NetMonHeader.hh"
       8              : #include "artdaq/TransferPlugins/MakeTransferPlugin.hh"
       9              : #include "artdaq/TransferPlugins/TransferInterface.hh"
      10              : 
      11              : namespace art {
      12              : class TransferOutputReliable;
      13              : }
      14              : 
      15              : /**
      16              :  * \brief An art::OutputModule which sends events using DataSenderManager.
      17              :  * This module is designed for transporting Fragment-wrapped art::Events after
      18              :  * they have been read into art, for example between the EventBuilder and the Aggregator.
      19              :  */
      20              : class art::TransferOutputReliable : public ArtdaqOutput
      21              : {
      22              : public:
      23              :         /**
      24              :          * \brief TransferOutputReliable Constructor
      25              :          * \param ps ParameterSet used to configure TransferOutputReliable
      26              :          *
      27              :          * TransferOutputReliable accepts no Parameters beyond those which art::OutputModule takes.
      28              :          * See the art::OutputModule documentation for more details on those Parameters.
      29              :          */
      30              :         explicit TransferOutputReliable(fhicl::ParameterSet const& ps);
      31              : 
      32              :         /**
      33              :          * \brief TransferOutputReliable Destructor
      34              :          */
      35              :         ~TransferOutputReliable() override;
      36              : 
      37              : protected:
      38              :         /// <summary>
      39              :         /// Send a message using the Transfer Plugin
      40              :         /// </summary>
      41              :         /// <param name="fragment">Fragment to send</param>
      42              :         void SendMessage(artdaq::FragmentPtr& fragment) override;
      43              : 
      44              : private:
      45              :         TransferOutputReliable(TransferOutputReliable const&) = delete;
      46              :         TransferOutputReliable(TransferOutputReliable&&) = delete;
      47              :         TransferOutputReliable& operator=(TransferOutputReliable const&) = delete;
      48              :         TransferOutputReliable& operator=(TransferOutputReliable&&) = delete;
      49              : 
      50              :         std::unique_ptr<artdaq::TransferInterface> transfer_;
      51              : };
      52              : 
      53            0 : art::TransferOutputReliable::TransferOutputReliable(fhicl::ParameterSet const& ps)
      54            0 :     : ArtdaqOutput(ps)
      55              : {
      56            0 :         TLOG(TLVL_DEBUG + 32) << "Begin: TransferOutputReliable::TransferOutputReliable(ParameterSet const& ps)";
      57            0 :         transfer_ = artdaq::MakeTransferPlugin(ps, "transfer_plugin", artdaq::TransferInterface::Role::kSend);
      58            0 :         TLOG(TLVL_DEBUG + 32) << "END: TransferOutputReliable::TransferOutputReliable";
      59            0 : }
      60              : 
      61            0 : art::TransferOutputReliable::~TransferOutputReliable()
      62              : {
      63            0 :         TLOG(TLVL_DEBUG + 32) << "Begin: TransferOutputReliable::~TransferOutputReliable()";
      64              : 
      65            0 :         auto sts = transfer_->transfer_fragment_reliable_mode(std::move(*artdaq::Fragment::eodFrag(0)));
      66            0 :         if (sts != artdaq::TransferInterface::CopyStatus::kSuccess)
      67              :         {
      68            0 :                 TLOG(TLVL_ERROR) << "Error sending EOD Fragment!";
      69              :         }
      70            0 :         transfer_.reset(nullptr);
      71            0 :         TLOG(TLVL_DEBUG + 32) << "End: TransferOutputReliable::~TransferOutputReliable()";
      72            0 : }
      73              : 
      74            0 : void art::TransferOutputReliable::SendMessage(artdaq::FragmentPtr& fragment)
      75              : {
      76            0 :         auto seqID = fragment->sequenceID();
      77            0 :         auto type = static_cast<int>(fragment->type());
      78            0 :         auto length = fragment->dataSizeBytes();
      79            0 :         TLOG(TLVL_DEBUG + 32) << "Sending message with sequenceID=" << fragment->sequenceID() << ", type=" << static_cast<int>(fragment->type())
      80            0 :                               << ", length=" << fragment->dataSizeBytes();
      81            0 :         auto sts = artdaq::TransferInterface::CopyStatus::kErrorNotRequiringException;
      82            0 :         sts = transfer_->transfer_fragment_reliable_mode(std::move(*fragment));
      83            0 :         if (sts != artdaq::TransferInterface::CopyStatus::kSuccess)
      84              :         {
      85            0 :                 TLOG(TLVL_ERROR) << "Error sending Fragment " << seqID << " of type " << type << " and length " << length;
      86              :         }
      87            0 : }
      88              : 
      89            0 : DEFINE_ART_MODULE(art::TransferOutputReliable)  // NOLINT(performance-unnecessary-value-param)
        

Generated by: LCOV version 2.0-1