00001 #ifndef artdaq_ArtModules_NetMonTransportService_h
00002 #define artdaq_ArtModules_NetMonTransportService_h
00003
00004 #include "art/Framework/Services/Registry/ServiceMacros.h"
00005
00006 #include "artdaq/ArtModules/NetMonTransportServiceInterface.h"
00007 #include "artdaq/DAQrate/DataSenderManager.hh"
00008 #include "artdaq-core/Core/GlobalQueue.hh"
00009
00010
00011
00016 class NetMonTransportService : public NetMonTransportServiceInterface
00017 {
00018 public:
00022 virtual ~NetMonTransportService();
00023
00033 NetMonTransportService(fhicl::ParameterSet const& pset, art::ActivityRegistry&);
00034
00040 void connect() override;
00041
00047 void disconnect() override;
00048
00052 void listen() override;
00053
00060 void sendMessage(uint64_t sequenceId, uint8_t messageType, TBufferFile& msg) override;
00061
00066 void receiveMessage(TBufferFile*& msg) override;
00067
00072 size_t dataReceiverCount() const { return sender_ptr_->destinationCount(); }
00073 private:
00074 fhicl::ParameterSet data_pset_;
00075
00076 std::unique_ptr<artdaq::DataSenderManager> sender_ptr_;
00077 artdaq::RawEventQueue& incoming_events_;
00078 std::unique_ptr<std::vector<artdaq::Fragment>> recvd_fragments_;
00079 };
00080
00081 DECLARE_ART_SERVICE_INTERFACE_IMPL(NetMonTransportService, NetMonTransportServiceInterface, LEGACY)
00082 #endif
00083
00084
00085
00086