1#ifndef DAQ_NETWORK_SOCKET_HPP
2#define DAQ_NETWORK_SOCKET_HPP
26 virtual ssize_t
receive(uint8_t* buffer,
size_t max_size) = 0;
34 virtual ssize_t
send(
const uint8_t* data,
size_t size) = 0;
57 UDPSocket(
const std::string& bind_address, uint16_t bind_port);
68 UDPSocket(
const std::string& remote_address, uint16_t remote_port,
bool is_sender,
69 const std::string& bind_address =
"");
73 ssize_t
receive(uint8_t* buffer,
size_t max_size)
override;
74 ssize_t
send(
const uint8_t* data,
size_t size)
override;
86 ssize_t
receive_from(uint8_t* buffer,
size_t max_size, std::string& source_address,
87 uint16_t& source_port);
97 ssize_t
send_to(
const std::string& dest_address, uint16_t dest_port,
const uint8_t* data,
123 TCPSocket(
const std::string& remote_address, uint16_t remote_port);
127 ssize_t
receive(uint8_t* buffer,
size_t max_size)
override;
128 ssize_t
send(
const uint8_t* data,
size_t size)
override;
136 void setup_socket(
const std::string& remote_address, uint16_t remote_port);
static void enable(board_bringup_t *b, uint16_t device_id)
Abstract base for network socket operations.
virtual ~NetworkSocket()=default
virtual std::string last_error() const =0
Get the last error message.
virtual ssize_t send(const uint8_t *data, size_t size)=0
Send data through the socket.
virtual ssize_t receive(uint8_t *buffer, size_t max_size)=0
Receive data from the socket.
virtual bool is_valid() const =0
Check if socket is valid and ready.
void setup_socket(const std::string &remote_address, uint16_t remote_port)
TCPSocket(const std::string &remote_address, uint16_t remote_port)
Create TCP socket connected to remote address.
ssize_t send(const uint8_t *data, size_t size) override
Send data through the socket.
std::string last_error() const override
Get the last error message.
ssize_t receive(uint8_t *buffer, size_t max_size) override
Receive data from 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 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).
UDPSocket(const std::string &bind_address, uint16_t bind_port)
Create UDP socket bound to local address.
bool is_valid() const override
Check if socket is valid and ready.
std::string remote_address_
bool set_broadcast(bool enable)
Enable broadcast (required before send_to to 255.255.255.255).
ssize_t receive(uint8_t *buffer, size_t max_size) override
Receive data from the socket.
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(const uint8_t *data, size_t size) override
Send data through the socket.