1 #ifndef jb_itch5_make_socket_udp_recv_hpp 2 #define jb_itch5_make_socket_udp_recv_hpp 7 #include <boost/asio/ip/multicast.hpp> 8 #include <boost/asio/ip/udp.hpp> 17 template <
class socket_t>
19 auto r_address = boost::asio::ip::address::from_string(cfg.
address());
21 boost::asio::ip::address local_address;
26 local_address = boost::asio::ip::address::from_string(cfg.
local_address());
27 }
else if (r_address.is_multicast()) {
30 if (r_address.is_v6()) {
31 local_address = boost::asio::ip::address_v6();
33 local_address = boost::asio::ip::address_v4();
39 local_address = r_address;
43 boost::asio::ip::udp::endpoint endpoint(local_address, cfg.
port());
44 socket.open(endpoint.protocol());
46 boost::asio::ip::udp::socket::reuse_address(cfg.
reuse_address()));
47 socket.bind(endpoint);
48 if (r_address.is_multicast()) {
49 socket.set_option(boost::asio::ip::multicast::join_group(r_address));
50 socket.set_option(boost::asio::ip::multicast::enable_loopback(
true));
70 template <
class socket_t = boost::asio::ip::udp::socket>
82 #endif // jb_itch5_make_socket_udp_recv_hpp socket_t make_socket_udp_recv(boost::asio::io_service &io, udp_receiver_config const &cfg)
Create a socket given the configuration parameters.
jb::config_attribute< udp_receiver_config, std::string > address
jb::config_attribute< udp_receiver_config, std::string > local_address
jb::config_attribute< udp_receiver_config, int > port
jb::config_attribute< udp_config_common, bool > reuse_address
void make_socket_udp_common(socket_t &s, udp_config_common const &cfg)
Configure a UDP socket.
A configuration object for UDP receivers.
The top-level namespace for the JayBeams library.
void setup_socket_udp_recv(socket_t &socket, udp_receiver_config const &cfg)
Configure a socket to receive UDP packets.