///\addtogroup protocol_facets_group
///\{
+ /** \brief Generic addressing type independent multicast protocol facet
+ */
class MulticastSocketProtocol
: public virtual SocketProtocol
{
public:
- void broadcastEnabled(bool v); ///< Enable broadcast send/receive
+ void broadcastEnabled(bool v) const; ///< Enable broadcast send/receive
/**< If this option is enabled, broadcast UDP messages will
be received on the socket and the socket will be
allowed to send out broadcast UDP messages
\param[in] v \c true to enable broadcast send/receive,
\c false to disable */
- bool broadcastEnabled(); ///< Get broadcast send/receive state
+ bool broadcastEnabled() const; ///< Get broadcast send/receive state
/**< \returns Current state of the broadcastEnabled()
option. */
unsigned mcTTL() const; ///< Return current multicast TTL
void mcTTL(unsigned value) const; ///< Set multicast TTL
- bool mcLoop() const; ///< Return current multicast loopback state
+ bool mcLoop() const; ///< Return current multicast loopback state.
void mcLoop(bool value) const; ///< Set multicast loopback state
+ /**< If set to false via \c mcLoop(value) multicast messages will not be looped back to local sockets. Default value is \c true (1). */
void mcIface(std::string const & iface = std::string()) const;
///< Set multicast send interface of the socket
data from */
};
+ /** \brief Multicast protocol facet for INet4 addressable multicast enabled sockets
+ */
class INet4MulticastSocketProtocol
- : public virtual SocketProtocol
+ : public MulticastSocketProtocol
{
public:
void mcAddMembership(INet4Address const & mcAddr) const;
\param[in] iface interface name */
};
+ /** \brief Multicast protocol facet for INet6 addressable multicast enabled sockets
+
+ This implementation supports INet6 mapped INet4 multicast addresses. This is a linux
+ specific extension and NOT part of the relevant RFCs.
+ */
class INet6MulticastSocketProtocol
- : public virtual SocketProtocol
+ : public MulticastSocketProtocol
{
public:
void mcAddMembership(INet6Address const & mcAddr) const;
groups received. The group is joined on the default
interface.
\param[in] mcAddr address of group to join */
- void mcAddMembership(INet6Address const & mcAddr, INet6Address const & localAddr)
- const;
- ///< join multicast group on a specific interface
- /**< This member will add \a mcAddr to the list of multicast
- groups received. The group is joined on the interface
- with the given local address.
- \param[in] mcAddr address of group to join
- \param[in] localAddr address of interface to join on */
void mcAddMembership(INet6Address const & mcAddr, std::string const & iface);
///< join multicast group on a specific interface
/**< This member will add \a mcAddr to the list of multicast
multicast groups received. The group is left from the
default interface.
\param[in] mcAddr address of group to leave */
- void mcDropMembership(INet6Address const & mcAddr, INet6Address const & localAddr)
- const;
- ///< leave multicast group on a specific interface
- /**< This member will remove \a mcAddr from the list of
- multicast groups received. The group is left from the
- interface with the given local address.
- \param[in] mcAddr address of group to leave
- \param[in] localAddr address of interface to leave
- from */
void mcDropMembership(INet6Address const & mcAddr, std::string const & iface)
const;
///< leave multicast group on a specific interface
multicast groups received. The group is left from the
interface with the given local address.
\param[in] mcAddr address of group to leave
- \param[in] localAddr address of interface to leave
- from */
+ \param[in] iface interface name */
};
///\}