Jpp  master_rocky-43-ge265d140c
the software that should make you happy
Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
UdpDataHandler< Consumer > Class Template Reference

Public Member Functions

 UdpDataHandler (boost::asio::io_service &service, int port, char *buffer, std::size_t buffer_size, Consumer const &consumer)
 

Private Types

typedef UdpDataHandler< Consumer > this_type
 

Private Member Functions

void data_handle (boost::system::error_code const &error, std::size_t bytes_transferred)
 

Private Attributes

boost::asio::ip::udp::socket m_socket
 
char * m_buffer
 
std::size_t m_buffer_size
 
Consumer m_consumer
 

Detailed Description

template<class Consumer>
class UdpDataHandler< Consumer >

Definition at line 368 of file clb_swiss_knife.cpp.

Member Typedef Documentation

◆ this_type

template<class Consumer >
typedef UdpDataHandler<Consumer> UdpDataHandler< Consumer >::this_type
private

Definition at line 370 of file clb_swiss_knife.cpp.

Constructor & Destructor Documentation

◆ UdpDataHandler()

template<class Consumer >
UdpDataHandler< Consumer >::UdpDataHandler ( boost::asio::io_service &  service,
int  port,
char *  buffer,
std::size_t  buffer_size,
Consumer const &  consumer 
)
inline

Definition at line 400 of file clb_swiss_knife.cpp.

406  : m_socket(
407  service
408  , boost::asio::ip::udp::endpoint(boost::asio::ip::udp::v4(), port)
409  )
410  , m_buffer(buffer)
412  , m_consumer(consumer)
413  {
414 #if __APPLE__
415  boost::asio::ip::udp::socket::receive_buffer_size option(3554432);
416 #else
417  boost::asio::ip::udp::socket::receive_buffer_size option(33554432);
418 #endif
419  m_socket.set_option(option);
420 
421  m_socket.async_receive(
422  boost::asio::buffer(m_buffer, m_buffer_size)
423  , boost::bind(
425  , this
426  , boost::asio::placeholders::error
427  , boost::asio::placeholders::bytes_transferred
428  )
429  );
430  }
std::size_t m_buffer_size
boost::asio::ip::udp::socket m_socket
void data_handle(boost::system::error_code const &error, std::size_t bytes_transferred)
static const size_t buffer_size

Member Function Documentation

◆ data_handle()

template<class Consumer >
void UdpDataHandler< Consumer >::data_handle ( boost::system::error_code const &  error,
std::size_t  bytes_transferred 
)
inlineprivate

Definition at line 377 of file clb_swiss_knife.cpp.

380  {
381  if (error) {
382  m_consumer(error, 0, 0);
383  } else {
384  m_consumer(error, m_buffer, bytes_transferred);
385  }
386 
387  m_socket.async_receive(
388  boost::asio::buffer(m_buffer, m_buffer_size)
389  , boost::bind(
391  , this
392  , boost::asio::placeholders::error
393  , boost::asio::placeholders::bytes_transferred
394  )
395  );
396  }

Member Data Documentation

◆ m_socket

template<class Consumer >
boost::asio::ip::udp::socket UdpDataHandler< Consumer >::m_socket
private

Definition at line 372 of file clb_swiss_knife.cpp.

◆ m_buffer

template<class Consumer >
char* UdpDataHandler< Consumer >::m_buffer
private

Definition at line 373 of file clb_swiss_knife.cpp.

◆ m_buffer_size

template<class Consumer >
std::size_t UdpDataHandler< Consumer >::m_buffer_size
private

Definition at line 374 of file clb_swiss_knife.cpp.

◆ m_consumer

template<class Consumer >
Consumer UdpDataHandler< Consumer >::m_consumer
private

Definition at line 375 of file clb_swiss_knife.cpp.


The documentation for this class was generated from the following file: