1 #ifndef artdaq_RTIDDS_RTIDDS_hh
2 #define artdaq_RTIDDS_RTIDDS_hh
4 #include "artdaq-core/Data/Fragment.hh"
6 #include <ndds/ndds_cpp.h>
37 RTIDDS(std::string name,
IOType iotype, std::string max_size =
"1000000");
83 const size_t receiveTimeout);
86 DDS_Octets dds_octets_;
87 std::queue<DDS_Octets> dds_octets_queue_;
89 std::mutex queue_mutex_;
97 std::string max_size_;
99 std::unique_ptr<DDSDomainParticipant, std::function<void(DDSDomainParticipant*)>> participant_;
101 DDSTopic* topic_octets_;
102 DDSOctetsDataWriter* octets_writer_;
103 DDSDataReader* octets_reader_;
105 static void participantDeleter(DDSDomainParticipant* participant);
DDS Transport Implementation.
virtual ~RTIDDS()=default
Default virtrual Destructor.
void transfer_fragment_min_blocking_mode_via_DDS_(artdaq::Fragment const &fragment)
Copy a Fragment to DDS.
A class that reads data from DDS.
OctetsListener octets_listener_
The receiver.
void on_data_available(DDSDataReader *reader)
Action to perform when data is available.
bool receiveFragmentFromDDS(artdaq::Fragment &fragment, const size_t receiveTimeout)
Receive a Fragment from DDS.
RTIDDS(std::string name, IOType iotype, std::string max_size="1000000")
Construct a RTIDDS transmitter.
void transfer_fragment_reliable_mode_via_DDS_(artdaq::Fragment &&fragment)
Move a Fragment to DDS.
IOType
Whether this DDS instance is a reader or a writer.