From 119468f621a59d86da10bedf75c4427b70f9d370 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Fri, 16 Mar 2012 03:15:41 +0000 Subject: Remove activity from interface and use set_property() instead. Move client registration stuff to Engine and remove corresponding events. Simply response ID interface. git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4066 a436a847-0d15-0410-975c-d299462d15a1 --- src/server/ClientBroadcaster.cpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'src/server/ClientBroadcaster.cpp') diff --git a/src/server/ClientBroadcaster.cpp b/src/server/ClientBroadcaster.cpp index 2931497a..1a55d355 100644 --- a/src/server/ClientBroadcaster.cpp +++ b/src/server/ClientBroadcaster.cpp @@ -39,6 +39,7 @@ namespace Server { void ClientBroadcaster::register_client(const URI& uri, ClientInterface* client) { + Glib::Mutex::Lock lock(_clients_mutex); Clients::iterator i = _clients.find(uri); if (i == _clients.end()) { @@ -56,12 +57,14 @@ ClientBroadcaster::register_client(const URI& uri, ClientInterface* client) bool ClientBroadcaster::unregister_client(const URI& uri) { - size_t erased = _clients.erase(uri); + Glib::Mutex::Lock lock(_clients_mutex); + const size_t erased = _clients.erase(uri); - if (erased > 0) + if (erased > 0) { LOG(info) << "Unregistered client: " << uri << endl; - else + } else { LOG(warn) << "Failed to find client to unregister: " << uri << endl; + } return (erased > 0); } @@ -72,6 +75,7 @@ ClientBroadcaster::unregister_client(const URI& uri) ClientInterface* ClientBroadcaster::client(const URI& uri) { + Glib::Mutex::Lock lock(_clients_mutex); Clients::iterator i = _clients.find(uri); if (i != _clients.end()) { return (*i).second; @@ -83,8 +87,10 @@ ClientBroadcaster::client(const URI& uri) void ClientBroadcaster::send_plugins(const NodeFactory::Plugins& plugins) { - for (Clients::const_iterator c = _clients.begin(); c != _clients.end(); ++c) + Glib::Mutex::Lock lock(_clients_mutex); + for (Clients::const_iterator c = _clients.begin(); c != _clients.end(); ++c) { send_plugins_to((*c).second, plugins); + } } void @@ -108,8 +114,10 @@ ClientBroadcaster::send_plugins_to(ClientInterface* client, const NodeFactory::P void ClientBroadcaster::send_object(const GraphObjectImpl* o, bool recursive) { - for (Clients::const_iterator i = _clients.begin(); i != _clients.end(); ++i) + Glib::Mutex::Lock lock(_clients_mutex); + for (Clients::const_iterator i = _clients.begin(); i != _clients.end(); ++i) { ObjectSender::send_object((*i).second, o, recursive); + } } } // namespace Server -- cgit v1.2.1