11#include <promeki/config.h>
12#if PROMEKI_ENABLE_NETWORK
19PROMEKI_NAMESPACE_BEGIN
55class MulticastManager :
public ObjectBase {
56 PROMEKI_OBJECT(MulticastManager, ObjectBase)
62 MulticastManager(ObjectBase *parent =
nullptr);
65 ~MulticastManager()
override;
73 Error joinGroup(
const SocketAddress &group, UdpSocket *socket);
82 Error joinGroup(
const SocketAddress &group, UdpSocket *socket,
const String &iface);
90 Error leaveGroup(
const SocketAddress &group, UdpSocket *socket);
93 void leaveAllGroups();
96 List<SocketAddress> activeGroups()
const;
103 bool isMemberOf(
const SocketAddress &group)
const;
116 Error joinSourceGroup(
const SocketAddress &group,
const SocketAddress &source, UdpSocket *socket);
125 Error leaveSourceGroup(
const SocketAddress &group,
const SocketAddress &source, UdpSocket *socket);
135 void setDefaultInterface(
const String &iface) { _defaultInterface = iface; }
138 const String &defaultInterface()
const {
return _defaultInterface; }
141 PROMEKI_SIGNAL(groupJoined, SocketAddress);
144 PROMEKI_SIGNAL(groupLeft, SocketAddress);
150 SocketAddress source;
154 List<Membership> _memberships;
155 String _defaultInterface;