12#ifndef RTCTK_REUSABLECOMPONENT_TELREPUB_UDPRECEIVER_HPP
13#define RTCTK_REUSABLECOMPONENT_TELREPUB_UDPRECEIVER_HPP
15#include <boost/asio/io_service.hpp>
23#include <boost/asio/io_context.hpp>
24#include <boost/asio/ip/udp.hpp>
25#include <log4cplus/logger.h>
27#include "perfc/counter.hpp"
30#include <numapp/numapolicies.hpp>
66 std::map<int32_t, QueuePtr> queue_map,
68 boost::asio::ip::udp::endpoint
const& endpoint,
69 boost::asio::ip::udp::endpoint
const& multicast_group,
71 numapp::NumaPolicies
const& receive_thread_policies);
89 enum class State { Idle, Run, Exit };
97 void HandleReceive(boost::system::error_code
const& error, std::size_t bytes_transferred);
99 log4cplus::Logger& m_logger;
103 boost::asio::io_service m_io_context;
104 boost::asio::ip::udp::socket m_socket;
108 boost::asio::ip::udp::endpoint m_sender;
109 std::thread m_rcv_thr;
112 std::atomic<State> m_requested_state;
118 std::map<int32_t, QueuePtr> m_queue_map;
122 perfc::CounterU64 m_frame_counter;
123 perfc::ScopedRegistration m_frame_counter_registration;
125 perfc::CounterU64 m_frames_dropped;
126 perfc::ScopedRegistration m_frames_dropped_registration;
127 std::chrono::steady_clock::time_point m_last_receive;
129 std::unique_ptr<componentFramework::DurationMonitor<>> m_frame_last_diff_monitor;
130 std::unique_ptr<componentFramework::DurationMonitor<>> m_frame_receive_time_monitor;
133 std::shared_ptr<componentFramework::BufferManager::BufferReference> m_current_buffer;
BufferManager is a class that will allocate a big buffer and spit it up in several cache-aligned sub-...
Definition: bufferManager.hpp:46
Component metrics interface.
Definition: componentMetricsIf.hpp:184
Receiving UDP data asynchronously and forwards received packets to provided packet processors.
Definition: udpReceiver.hpp:48
~UdpReceiver() noexcept
Definition: udpReceiver.cpp:102
void Disable()
Disables processing UDP data from socket.
Definition: udpReceiver.cpp:197
void Enable()
Enables processing UDP data from socket.
Definition: udpReceiver.cpp:186
Header file for ComponentMetricsIf.
Header file for Duration Monitor.
Definition: ddsPubThread.cpp:17
constexpr int DATAGRAM_SIZE
maximal UDP datagram size
Definition: udpReceiver.hpp:37