diff --git a/core-buffer/src/UdpReceiver.cpp b/core-buffer/src/UdpReceiver.cpp index f5ccdcd..d53ccec 100644 --- a/core-buffer/src/UdpReceiver.cpp +++ b/core-buffer/src/UdpReceiver.cpp @@ -1,7 +1,7 @@ -#include #include #include #include "UdpReceiver.hpp" +#include "jungfrau.hpp" using namespace std; @@ -70,6 +70,11 @@ void UdpReceiver::bind(const uint16_t port, const size_t usec_timeout) sizeof(rcvbuf_n_bytes)); } +int UdpReceiver::receive_many(mmsghdr* msgs, const size_t n_msgs) +{ + return recvmmsg(socket_fd_, msgs, n_msgs, MSG_DONTWAIT, 0); +} + bool UdpReceiver::receive(void* buffer, size_t buffer_n_bytes) { auto data_len = recv(socket_fd_, buffer, buffer_n_bytes, 0); @@ -97,4 +102,4 @@ void UdpReceiver::close() { ::close(socket_fd_); socket_fd_ = -1; -} \ No newline at end of file +} diff --git a/core-writer/include/UdpReceiver.hpp b/core-writer/include/UdpReceiver.hpp index b077184..5c9d6df 100644 --- a/core-writer/include/UdpReceiver.hpp +++ b/core-writer/include/UdpReceiver.hpp @@ -2,6 +2,7 @@ #define UDPRECEIVER_H #include "config.hpp" +#include #include "RingBuffer.hpp" class UdpReceiver { @@ -13,6 +14,8 @@ public: virtual ~UdpReceiver(); bool receive(void* buffer, size_t buffer_n_bytes); + int receive_many(mmsghdr* msgs, const size_t n_msgs); + void bind( const uint16_t port, const size_t usec_timeout=config::udp_usec_timeout);