STAR
Cal STAR — firmware, DAQ server, and engine design
Loading...
Searching...
No Matches
daq_comms::transport::UDPSocket Class Reference

UDP socket implementation. More...

#include <NetworkSocket.hpp>

Inheritance diagram for daq_comms::transport::UDPSocket:
[legend]
Collaboration diagram for daq_comms::transport::UDPSocket:
[legend]

Public Member Functions

 UDPSocket (const std::string &bind_address, uint16_t bind_port)
 Create UDP socket bound to local address.
 UDPSocket (const std::string &remote_address, uint16_t remote_port, bool is_sender, const std::string &bind_address="")
 Create UDP socket for sending to remote address.
 ~UDPSocket () override
ssize_t receive (uint8_t *buffer, size_t max_size) override
 Receive data from the socket.
ssize_t send (const uint8_t *data, size_t size) override
 Send data through the socket.
bool is_valid () const override
 Check if socket is valid and ready.
std::string last_error () const override
 Get the last error message.
ssize_t receive_from (uint8_t *buffer, size_t max_size, std::string &source_address, uint16_t &source_port)
 Receive with source address information.
ssize_t send_to (const std::string &dest_address, uint16_t dest_port, const uint8_t *data, size_t size)
 Send UDP packet to specific destination (works on bound sockets).
bool set_broadcast (bool enable)
 Enable broadcast (required before send_to to 255.255.255.255).
Public Member Functions inherited from daq_comms::transport::NetworkSocket
virtual ~NetworkSocket ()=default

Private Member Functions

void setup_socket ()

Private Attributes

int socket_fd_
bool is_bound_
std::string remote_address_
uint16_t remote_port_
std::string last_error_

Detailed Description

UDP socket implementation.

Definition at line 50 of file NetworkSocket.hpp.

Constructor & Destructor Documentation

◆ UDPSocket() [1/2]

daq_comms::transport::UDPSocket::UDPSocket ( const std::string & bind_address,
uint16_t bind_port )

Create UDP socket bound to local address.

Parameters
bind_addressLocal address to bind to (e.g., "0.0.0.0")
bind_portLocal port to bind to

Definition at line 17 of file NetworkSocket.cpp.

References is_bound_, last_error_, remote_port_, and socket_fd_.

◆ UDPSocket() [2/2]

daq_comms::transport::UDPSocket::UDPSocket ( const std::string & remote_address,
uint16_t remote_port,
bool is_sender,
const std::string & bind_address = "" )

Create UDP socket for sending to remote address.

Parameters
remote_addressRemote address to send to
remote_portRemote port to send to
is_senderTag selecting this overload
bind_addressLocal address to send from, pinning the egress NIC. Empty or "0.0.0.0" leaves the interface to the kernel — which is only safe on a host with one route to the boards. See lib/include/net/DaqInterface.hpp.

Definition at line 60 of file NetworkSocket.cpp.

References is_bound_, last_error_, remote_address_, remote_port_, and socket_fd_.

◆ ~UDPSocket()

daq_comms::transport::UDPSocket::~UDPSocket ( )
override

Definition at line 92 of file NetworkSocket.cpp.

References socket_fd_.

Member Function Documentation

◆ is_valid()

bool daq_comms::transport::UDPSocket::is_valid ( ) const
overridevirtual

Check if socket is valid and ready.

Implements daq_comms::transport::NetworkSocket.

Definition at line 209 of file NetworkSocket.cpp.

References socket_fd_.

◆ last_error()

std::string daq_comms::transport::UDPSocket::last_error ( ) const
overridevirtual

Get the last error message.

Implements daq_comms::transport::NetworkSocket.

Definition at line 213 of file NetworkSocket.cpp.

References last_error_.

◆ receive()

ssize_t daq_comms::transport::UDPSocket::receive ( uint8_t * buffer,
size_t max_size )
overridevirtual

Receive data from the socket.

Parameters
bufferBuffer to store received data
max_sizeMaximum bytes to receive
Returns
Number of bytes received, or -1 on error

Implements daq_comms::transport::NetworkSocket.

Definition at line 98 of file NetworkSocket.cpp.

References last_error_, and socket_fd_.

◆ receive_from()

ssize_t daq_comms::transport::UDPSocket::receive_from ( uint8_t * buffer,
size_t max_size,
std::string & source_address,
uint16_t & source_port )

Receive with source address information.

Parameters
bufferBuffer to store received data
max_sizeMaximum bytes to receive
source_addressOutput parameter for source IP
source_portOutput parameter for source port
Returns
Number of bytes received, or -1 on error

Definition at line 116 of file NetworkSocket.cpp.

References last_error_, and socket_fd_.

◆ send()

ssize_t daq_comms::transport::UDPSocket::send ( const uint8_t * data,
size_t size )
overridevirtual

Send data through the socket.

Parameters
dataData to send
sizeNumber of bytes to send
Returns
Number of bytes sent, or -1 on error

Implements daq_comms::transport::NetworkSocket.

Definition at line 176 of file NetworkSocket.cpp.

References is_bound_, last_error_, remote_address_, remote_port_, and socket_fd_.

Referenced by fsw::fsw::FSWConfigManager::send_config_to_board().

◆ send_to()

ssize_t daq_comms::transport::UDPSocket::send_to ( const std::string & dest_address,
uint16_t dest_port,
const uint8_t * data,
size_t size )

Send UDP packet to specific destination (works on bound sockets).

Parameters
dest_addressDestination IP (e.g. "255.255.255.255" for broadcast)
dest_portDestination port
dataData to send
sizeNumber of bytes
Returns
Bytes sent, or -1 on error. Set SO_BROADCAST before sending to broadcast addr.

Definition at line 152 of file NetworkSocket.cpp.

References last_error_, and socket_fd_.

◆ set_broadcast()

bool daq_comms::transport::UDPSocket::set_broadcast ( bool enable)

Enable broadcast (required before send_to to 255.255.255.255).

Definition at line 141 of file NetworkSocket.cpp.

References enable(), last_error_, and socket_fd_.

◆ setup_socket()

void daq_comms::transport::UDPSocket::setup_socket ( )
private

Member Data Documentation

◆ is_bound_

bool daq_comms::transport::UDPSocket::is_bound_
private

Definition at line 105 of file NetworkSocket.hpp.

Referenced by send(), UDPSocket(), and UDPSocket().

◆ last_error_

std::string daq_comms::transport::UDPSocket::last_error_
private

◆ remote_address_

std::string daq_comms::transport::UDPSocket::remote_address_
private

Definition at line 106 of file NetworkSocket.hpp.

Referenced by send(), and UDPSocket().

◆ remote_port_

uint16_t daq_comms::transport::UDPSocket::remote_port_
private

Definition at line 107 of file NetworkSocket.hpp.

Referenced by send(), UDPSocket(), and UDPSocket().

◆ socket_fd_

int daq_comms::transport::UDPSocket::socket_fd_
private

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