#include <uhd/transport/udp_zero_copy.hpp>
Classes | |
struct | buff_params |
Public Types | |
typedef std::shared_ptr< udp_zero_copy > | sptr |
Public Types inherited from uhd::transport::zero_copy_if | |
typedef std::shared_ptr< zero_copy_if > | sptr |
Public Member Functions | |
virtual uint16_t | get_local_port (void) const =0 |
virtual std::string | get_local_addr (void) const =0 |
Public Member Functions inherited from uhd::transport::zero_copy_if | |
virtual | ~zero_copy_if () |
virtual managed_recv_buffer::sptr | get_recv_buff (double timeout=0.1)=0 |
virtual size_t | get_num_recv_frames (void) const =0 |
virtual size_t | get_recv_frame_size (void) const =0 |
virtual managed_send_buffer::sptr | get_send_buff (double timeout=0.1)=0 |
virtual size_t | get_num_send_frames (void) const =0 |
virtual size_t | get_send_frame_size (void) const =0 |
Static Public Member Functions | |
static sptr | make (const std::string &addr, const std::string &port, const zero_copy_xport_params &default_buff_args, udp_zero_copy::buff_params &buff_params_out, const device_addr_t &hints=device_addr_t()) |
A zero copy udp transport provides an efficient way to handle data. by avoiding the extra copy when recv() or send() is called on the socket. Rather, the zero copy transport gives the caller memory references. The caller informs the transport when it is finished with the reference.
On Linux systems, the zero copy transport can use a kernel packet ring. If no platform specific solution is available, make returns a boost asio implementation that wraps the functionality around a standard send/recv calls.
typedef std::shared_ptr<udp_zero_copy> uhd::transport::udp_zero_copy::sptr |
|
pure virtual |
Return the local IP address of the UDP connection as a dotted string.
|
pure virtual |
Return the local port of the UDP connection
Port is in host byte order. No funny business here.
|
static |
Make a new zero copy udp transport: This transport is for sending and receiving between this host and a single endpoint. The primary usage for this transport will be data transactions. The underlying implementation is fast and platform specific.
The address will be resolved, it can be a host name or ipv4. The port will be resolved, it can be a port type or number.
addr | a string representing the destination address | |
port | a string representing the destination port | |
default_buff_args | Default values for frame sizes and num frames | |
[out] | buff_params_out | Returns the actual buffer sizes |
hints | optional parameters to pass to the underlying transport |