userver: engine::io::IpMreq Class Reference
Loading...
Searching...
No Matches
engine::io::IpMreq Class Referencefinal

#include <userver/engine/io/multicast_membership.hpp>

Detailed Description

Native ip multicast request wrapper

static constexpr std::uint16_t kPort = 12345;
static constexpr const char* kGroup = "224.0.0.42";
sockaddr_in any_addr{};
any_addr.sin_family = AF_INET;
any_addr.sin_port = htons(kPort);
any_addr.sin_addr.s_addr = htonl(INADDR_ANY);
receiver.Bind(engine::io::Sockaddr(&any_addr));
engine::io::IpMreq mreq(kGroup, 0);
engine::io::AddMembership(receiver, mreq);
char c{};
const auto result = receiver.ReadNoblock(&c, 1);

Definition at line 26 of file multicast_membership.hpp.

Public Member Functions

 IpMreq (const char *ip_multiaddr, unsigned int interface_index)
 Creates a structure storing multicast group membership request information. The resulting object may be passed to engine::io::AddMembership() and engine::io::DropMembership() functions.
 
void * Data ()
 Native multicast request structure pointer.
 
const void * Data () const
 Native multicast request structure pointer.
 
int GetSocketOptionLevel () const noexcept
 Returns socket option level.
 
int GetJoinSocketOptionName () const noexcept
 Returns socket option name for joining multicast group.
 
int GetLeaveSocketOption () const noexcept
 Returns socket option name for leaving multicast group.
 
size_t Size () const noexcept
 

Constructor & Destructor Documentation

◆ IpMreq()

engine::io::IpMreq::IpMreq ( const char * ip_multiaddr,
unsigned int interface_index )

Creates a structure storing multicast group membership request information. The resulting object may be passed to engine::io::AddMembership() and engine::io::DropMembership() functions.

Note
IP version is chosen automatically from ip_multiaddr value.
Parameters
ip_multiaddrIP multicast group address (e.g. 239.255.0.1" or "ff02::1")
interface_indexInterface index (0 for default);

Member Function Documentation

◆ Data() [1/2]

void * engine::io::IpMreq::Data ( )
inline

Native multicast request structure pointer.

Definition at line 36 of file multicast_membership.hpp.

◆ Data() [2/2]

const void * engine::io::IpMreq::Data ( ) const
inline

Native multicast request structure pointer.

Definition at line 39 of file multicast_membership.hpp.

◆ GetJoinSocketOptionName()

int engine::io::IpMreq::GetJoinSocketOptionName ( ) const
inlinenoexcept

Returns socket option name for joining multicast group.

Definition at line 45 of file multicast_membership.hpp.

◆ GetLeaveSocketOption()

int engine::io::IpMreq::GetLeaveSocketOption ( ) const
inlinenoexcept

Returns socket option name for leaving multicast group.

Definition at line 48 of file multicast_membership.hpp.

◆ GetSocketOptionLevel()

int engine::io::IpMreq::GetSocketOptionLevel ( ) const
inlinenoexcept

Returns socket option level.

Definition at line 42 of file multicast_membership.hpp.

◆ Size()

size_t engine::io::IpMreq::Size ( ) const
inlinenoexcept

Returns appropriate size for setsockopt based on address family.

Parameters
domainSocket domain (AF_INET or AF_INET6)

Definition at line 52 of file multicast_membership.hpp.


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