USRP Hardware Driver and USRP Manual  Version:
UHD and USRP Manual
uhd::transport::udp_zero_copy Class Referenceabstract

#include <uhd/transport/udp_zero_copy.hpp>

Inheritance diagram for uhd::transport::udp_zero_copy:


struct  buff_params

Public Types

typedef std::shared_ptr< udp_zero_copysptr
- Public Types inherited from uhd::transport::zero_copy_if
typedef std::shared_ptr< zero_copy_ifsptr

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())

Detailed Description

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.

Member Typedef Documentation

◆ sptr

Member Function Documentation

◆ get_local_addr()

virtual std::string uhd::transport::udp_zero_copy::get_local_addr ( void  ) const
pure virtual

Return the local IP address of the UDP connection as a dotted string.

IP address as a string or empty string if the IP address could not be identified.

◆ get_local_port()

virtual uint16_t uhd::transport::udp_zero_copy::get_local_port ( void  ) const
pure virtual

Return the local port of the UDP connection

Port is in host byte order. No funny business here.

Port number or 0 if port number couldn't be identified.

◆ make()

static sptr uhd::transport::udp_zero_copy::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() 

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.

addra string representing the destination address
porta string representing the destination port
default_buff_argsDefault values for frame sizes and num frames
[out]buff_params_outReturns the actual buffer sizes
hintsoptional parameters to pass to the underlying transport

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