libpromeki main
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
multicastmanager.h
Go to the documentation of this file.
1
8#pragma once
9
11#include <promeki/core/error.h>
12#include <promeki/core/list.h>
13#include <promeki/core/string.h>
15
17
18class UdpSocket;
19
48 PROMEKI_OBJECT(MulticastManager, ObjectBase)
49 public:
55
58
65 Error joinGroup(const SocketAddress &group, UdpSocket *socket);
66
74 Error joinGroup(const SocketAddress &group, UdpSocket *socket,
75 const String &iface);
76
83 Error leaveGroup(const SocketAddress &group, UdpSocket *socket);
84
87
90
96 bool isMemberOf(const SocketAddress &group) const;
97
110 const SocketAddress &source,
111 UdpSocket *socket);
112
121 const SocketAddress &source,
122 UdpSocket *socket);
123
132 void setDefaultInterface(const String &iface) { _defaultInterface = iface; }
133
135 const String &defaultInterface() const { return _defaultInterface; }
136
139
142
143 private:
144 struct Membership {
145 SocketAddress group;
146 UdpSocket *socket;
147 SocketAddress source; // For SSM, null otherwise
148 bool isSSM = false;
149 };
150
151 List<Membership> _memberships;
152 String _defaultInterface;
153};
154
Lightweight error code wrapper for the promeki library.
Definition error.h:39
Dynamic array container wrapping std::vector.
Definition list.h:40
Manages multicast group membership for multi-stream scenarios.
Definition multicastmanager.h:47
bool isMemberOf(const SocketAddress &group) const
Returns true if any socket is a member of the group.
void setDefaultInterface(const String &iface)
Sets the default network interface for joins.
Definition multicastmanager.h:132
Error joinGroup(const SocketAddress &group, UdpSocket *socket)
Joins a multicast group on a socket.
Error leaveSourceGroup(const SocketAddress &group, const SocketAddress &source, UdpSocket *socket)
Leaves a Source-Specific Multicast group.
List< SocketAddress > activeGroups() const
Returns a list of all active multicast group addresses.
void leaveAllGroups()
Leaves all managed multicast groups.
~MulticastManager() override
Destructor. Leaves all managed groups.
MulticastManager(ObjectBase *parent=nullptr)
Constructs a MulticastManager.
const String & defaultInterface() const
Returns the default interface name.
Definition multicastmanager.h:135
PROMEKI_SIGNAL(groupJoined, SocketAddress)
Emitted when a multicast group is joined.
Error joinGroup(const SocketAddress &group, UdpSocket *socket, const String &iface)
Joins a multicast group on a specific interface.
PROMEKI_SIGNAL(groupLeft, SocketAddress)
Emitted when a multicast group is left.
Error joinSourceGroup(const SocketAddress &group, const SocketAddress &source, UdpSocket *socket)
Joins a Source-Specific Multicast group.
Error leaveGroup(const SocketAddress &group, UdpSocket *socket)
Leaves a multicast group on a socket.
Base object for promeki.
Definition objectbase.h:129
ObjectBase * parent() const
Returns the parent object, if one. nullptr if none.
Definition objectbase.h:258
Network address with port number.
Definition socketaddress.h:50
Encoding-aware string class with copy-on-write semantics.
Definition string.h:35
Datagram-oriented UDP socket with multicast support.
Definition udpsocket.h:47
#define PROMEKI_NAMESPACE_BEGIN
Starts a promeki namespace block.
Definition namespace.h:14
#define PROMEKI_NAMESPACE_END
Ends a promeki namespace block.
Definition namespace.h:19