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/SharedMemoryEventReceiver.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
00068 void receiveInitMessage(TBufferFile*& msg) override;
00069
00074 size_t dataReceiverCount() const { return sender_ptr_->destinationCount(); }
00075 private:
00076 fhicl::ParameterSet data_pset_;
00077 bool init_received_;
00078 double init_timeout_s_;
00079
00080 std::unique_ptr<artdaq::DataSenderManager> sender_ptr_;
00081 std::unique_ptr<artdaq::SharedMemoryEventReceiver> incoming_events_;
00082 std::unique_ptr<std::vector<artdaq::Fragment>> recvd_fragments_;
00083 };
00084
00085 DECLARE_ART_SERVICE_INTERFACE_IMPL(NetMonTransportService, NetMonTransportServiceInterface, LEGACY)
00086 #endif
00087
00088
00089
00090