9#ifndef IOMANAGER_INCLUDE_IOMANAGER_NRECEIVER_HPP_
10#define IOMANAGER_INCLUDE_IOMANAGER_NRECEIVER_HPP_
23template<
typename Datatype>
42 void subscribe(std::string topic)
override;
48 template<
typename MessageType>
49 typename std::enable_if<dunedaq::serialization::is_serializable<MessageType>::value, MessageType>::type
read_network(
52 template<
typename MessageType>
53 typename std::enable_if<!dunedaq::serialization::is_serializable<MessageType>::value, MessageType>::type
read_network(
56 template<
typename MessageType>
57 typename std::enable_if<dunedaq::serialization::is_serializable<MessageType>::value, std::optional<MessageType>>::type
60 template<
typename MessageType>
61 typename std::enable_if<!dunedaq::serialization::is_serializable<MessageType>::value,
62 std::optional<MessageType>>::type
65 template<
typename MessageType>
66 typename std::enable_if<dunedaq::serialization::is_serializable<MessageType>::value,
void>::type
add_callback_impl(
67 std::function<
void(MessageType&)> callback);
69 template<
typename MessageType>
70 typename std::enable_if<!dunedaq::serialization::is_serializable<MessageType>::value,
void>::type
add_callback_impl(
71 std::function<
void(MessageType&)>);
std::enable_if< dunedaq::serialization::is_serializable< MessageType >::value, std::optional< MessageType > >::type try_read_network(Receiver::timeout_t const &timeout)
void get_receiver(Receiver::timeout_t timeout)
void subscribe(std::string topic) override
std::enable_if<!dunedaq::serialization::is_serializable< MessageType >::value, void >::type add_callback_impl(std::function< void(MessageType &)>)
void add_callback(std::function< void(Datatype &)> callback) override
std::function< void(Datatype &)> m_callback
std::optional< Datatype > try_receive(Receiver::timeout_t timeout) override
std::enable_if<!dunedaq::serialization::is_serializable< MessageType >::value, MessageType >::type read_network(Receiver::timeout_t const &)
std::enable_if< dunedaq::serialization::is_serializable< MessageType >::value, MessageType >::type read_network(Receiver::timeout_t const &timeout)
NetworkReceiverModel(ConnectionId const &conn_id)
std::mutex m_receive_mutex
void unsubscribe(std::string topic) override
std::shared_ptr< ipm::Receiver > m_network_receiver_ptr
std::enable_if< dunedaq::serialization::is_serializable< MessageType >::value, void >::type add_callback_impl(std::function< void(MessageType &)> callback)
std::mutex m_callback_mutex
void remove_callback() override
std::atomic< bool > m_with_callback
Datatype receive(Receiver::timeout_t timeout) override
std::enable_if<!dunedaq::serialization::is_serializable< MessageType >::value, std::optional< MessageType > >::type try_read_network(Receiver::timeout_t const &)
std::unique_ptr< std::thread > m_event_loop_runner
std::chrono::milliseconds timeout_t