udp.hh
Go to the documentation of this file.
1 
37 #pragma once
38 
39 #include <atomic>
40 #include <thread>
41 #include <vector>
42 
43 #include "details/legacy/ip.hh"
44 
45 namespace multisense{
46 namespace legacy{
47 
52 {
53  std::unique_ptr<sockaddr_in> sensor_address = nullptr;
55  uint16_t server_socket_port = 0;
56 };
57 
65 {
66 public:
67 
73  UdpReceiver(const NetworkSocket &socket,
74  size_t max_mtu,
75  std::function<void(const std::vector<uint8_t>&)> receive_callback);
76 
77  ~UdpReceiver();
78 
79 private:
80 
84  void rx_thread();
85 
90 
94  std::thread m_rx_thread;
95 
99  std::atomic_bool m_stop{false};
100 
104  size_t m_max_mtu = 0;
105 
109  std::vector<uint8_t> m_incoming_buffer;
110 
114  std::function<void(const std::vector<uint8_t>&)> m_receive_callback;
115 };
116 
117 
121 int64_t publish_data(const NetworkSocket &socket, const std::vector<uint8_t> &data);
122 
123 }
124 }
multisense::legacy::NetworkSocket::sensor_address
std::unique_ptr< sockaddr_in > sensor_address
Definition: udp.hh:53
multisense::legacy::UdpReceiver::m_stop
std::atomic_bool m_stop
Atomic flag to stop the rx_thread on destruction.
Definition: udp.hh:99
multisense::legacy::UdpReceiver::~UdpReceiver
~UdpReceiver()
Definition: udp.cc:60
multisense::legacy::NetworkSocket::sensor_socket
socket_t sensor_socket
Definition: udp.hh:54
multisense::legacy::UdpReceiver::m_rx_thread
std::thread m_rx_thread
The rx_thread object which is spawned on construction.
Definition: udp.hh:94
multisense::legacy::UdpReceiver::rx_thread
void rx_thread()
The rx thread function which is receives UDP data.
Definition: udp.cc:71
multisense::legacy::UdpReceiver::m_max_mtu
size_t m_max_mtu
The amount of data to read off the socket during each read operation.
Definition: udp.hh:104
multisense::legacy::publish_data
int64_t publish_data(const NetworkSocket &socket, const std::vector< uint8_t > &data)
Convenience function used to user specified data out on the host's UDP socket.
Definition: udp.cc:137
multisense::legacy::NetworkSocket
Convenience network socket object which contains the data corresponding to our connection.
Definition: udp.hh:51
multisense::legacy::UdpReceiver::m_receive_callback
std::function< void(const std::vector< uint8_t > &)> m_receive_callback
User specified callback which is called once UDP data is received.
Definition: udp.hh:114
multisense::legacy::UdpReceiver
Convenience object which receives data from a UDP socket and dispatches to a user defined callback....
Definition: udp.hh:64
multisense::legacy::UdpReceiver::m_incoming_buffer
std::vector< uint8_t > m_incoming_buffer
Internal buffer used to write incoming UDP data into.
Definition: udp.hh:109
multisense::legacy::NetworkSocket::server_socket_port
uint16_t server_socket_port
Definition: udp.hh:55
multisense::legacy::UdpReceiver::UdpReceiver
UdpReceiver(const NetworkSocket &socket, size_t max_mtu, std::function< void(const std::vector< uint8_t > &)> receive_callback)
Construct a UDP receiver for a given socket, and call a user callback whenever there is data availabl...
Definition: udp.cc:47
multisense
Definition: factory.cc:39
ip.hh
multisense::legacy::UdpReceiver::m_socket
socket_t m_socket
The internal socket which UDP data is receive on.
Definition: udp.hh:89
multisense::legacy::socket_t
int32_t socket_t
Definition: ip.hh:67


multisense_lib
Author(s):
autogenerated on Thu Apr 17 2025 02:49:09