summaryrefslogtreecommitdiffstats
path: root/src/server/Broadcaster.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/Broadcaster.cpp')
-rw-r--r--src/server/Broadcaster.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/server/Broadcaster.cpp b/src/server/Broadcaster.cpp
index f3bc96f7..8e53164f 100644
--- a/src/server/Broadcaster.cpp
+++ b/src/server/Broadcaster.cpp
@@ -26,10 +26,16 @@
namespace Ingen {
namespace Server {
+Broadcaster::Broadcaster()
+ : _must_broadcast(false)
+ , _bundle_depth(0)
+{}
+
Broadcaster::~Broadcaster()
{
Glib::Mutex::Lock lock(_clients_mutex);
_clients.clear();
+ _broadcastees.clear();
}
/** Register a client to receive messages over the notification band.
@@ -51,9 +57,21 @@ Broadcaster::unregister_client(const Raul::URI& uri)
{
Glib::Mutex::Lock lock(_clients_mutex);
const size_t erased = _clients.erase(uri);
+ _broadcastees.erase(uri);
return (erased > 0);
}
+void
+Broadcaster::set_broadcast(const Raul::URI& client, bool broadcast)
+{
+ if (broadcast) {
+ _broadcastees.insert(client);
+ } else {
+ _broadcastees.erase(client);
+ }
+ _must_broadcast.store(!_broadcastees.empty());
+}
+
/** Looks up the client with the given source @a uri (which is used as the
* unique identifier for registered clients).
*/