diff options
author | David Robillard <d@drobilla.net> | 2006-09-09 14:24:56 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2006-09-09 14:24:56 +0000 |
commit | fca95e5d454d37bd74b98f5bce35cfcbaee86c3f (patch) | |
tree | 97fcf6e8afaf4356d46a24236e9aa2451ab55698 /src/libs/engine/ClientBroadcaster.cpp | |
parent | b853b3dde1f7028dd275f78433a6ad9b5b9f61c7 (diff) | |
download | ingen-fca95e5d454d37bd74b98f5bce35cfcbaee86c3f.tar.gz ingen-fca95e5d454d37bd74b98f5bce35cfcbaee86c3f.tar.bz2 ingen-fca95e5d454d37bd74b98f5bce35cfcbaee86c3f.zip |
Drove 'er home! Working monolothic Ingenuity (ie. in-process engine).
Countless bugfixes.
git-svn-id: http://svn.drobilla.net/lad/ingen@123 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/libs/engine/ClientBroadcaster.cpp')
-rw-r--r-- | src/libs/engine/ClientBroadcaster.cpp | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/src/libs/engine/ClientBroadcaster.cpp b/src/libs/engine/ClientBroadcaster.cpp index 355d4232..181e5a2c 100644 --- a/src/libs/engine/ClientBroadcaster.cpp +++ b/src/libs/engine/ClientBroadcaster.cpp @@ -42,9 +42,6 @@ namespace Ingen { void ClientBroadcaster::register_client(const ClientKey key, CountedPtr<ClientInterface> client) { - assert(key.type() == ClientKey::OSC_URL); - assert(key.uri() != ""); - bool found = false; for (ClientList::iterator i = _clients.begin(); i != _clients.end(); ++i) if ((*i).first == key) @@ -126,12 +123,10 @@ ClientBroadcaster::send_error(const string& msg) (*i).second->error(msg); } - -/* FIXME: Make a copy method for list and just make a copy and pass it here - * instead of this global+locking mess */ void -ClientBroadcaster::send_plugins_to(ClientInterface* client, const list<Plugin*>& plugin_list) +ClientBroadcaster::send_plugins_to(CountedPtr<ClientInterface> client, const list<Plugin*>& plugin_list) { +#if 0 // FIXME: This probably isn't actually thread safe const list<Plugin*> plugs = plugin_list; // make a copy @@ -175,6 +170,23 @@ ClientBroadcaster::send_plugins_to(ClientInterface* client, const list<Plugin*>& } for (list<lo_bundle>::const_iterator i = msgs.begin(); i != msgs.end(); ++i) lo_message_free(*i); +#endif + client->transfer_begin(); + + for (list<Plugin*>::const_iterator i = plugin_list.begin(); i != plugin_list.end(); ++i) { + const Plugin* const plugin = *i; + client->new_plugin(plugin->type_string(), plugin->uri(), plugin->name()); + } + + client->transfer_end(); +} + + +void +ClientBroadcaster::send_plugins(const list<Plugin*>& plugin_list) +{ + for (ClientList::const_iterator c = _clients.begin(); c != _clients.end(); ++c) + send_plugins_to((*c).second, plugin_list); } |