summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/bindings/Client.hpp92
-rw-r--r--src/common/interface/ClientInterface.hpp89
-rw-r--r--src/common/interface/EngineInterface.hpp11
-rw-r--r--src/common/interface/Responder.hpp71
-rw-r--r--src/libs/client/OSCClientReceiver.cpp40
-rw-r--r--src/libs/client/OSCClientReceiver.hpp8
-rw-r--r--src/libs/client/OSCEngineSender.cpp2
-rw-r--r--src/libs/client/OSCEngineSender.hpp5
-rw-r--r--src/libs/client/SigClientInterface.hpp42
-rw-r--r--src/libs/client/ThreadedSigClientInterface.hpp45
-rw-r--r--src/libs/engine/ClientBroadcaster.hpp1
-rw-r--r--src/libs/engine/Event.hpp17
-rw-r--r--src/libs/engine/Makefile.am4
-rw-r--r--src/libs/engine/OSCClientSender.cpp142
-rw-r--r--src/libs/engine/OSCClientSender.hpp97
-rw-r--r--src/libs/engine/OSCEngineReceiver.cpp63
-rw-r--r--src/libs/engine/OSCEngineReceiver.hpp5
-rw-r--r--src/libs/engine/OSCResponder.cpp98
-rw-r--r--src/libs/engine/OSCResponder.hpp70
-rw-r--r--src/libs/engine/QueuedEngineInterface.cpp33
-rw-r--r--src/libs/engine/QueuedEngineInterface.hpp15
-rw-r--r--src/libs/engine/QueuedEvent.hpp12
-rw-r--r--src/libs/engine/Responder.hpp (renamed from src/libs/engine/DirectResponder.hpp)42
-rw-r--r--src/libs/engine/events/AddNodeEvent.cpp12
-rw-r--r--src/libs/engine/events/AddNodeEvent.hpp26
-rw-r--r--src/libs/engine/events/AddPortEvent.cpp4
-rw-r--r--src/libs/engine/events/AddPortEvent.hpp18
-rw-r--r--src/libs/engine/events/AllNotesOffEvent.cpp6
-rw-r--r--src/libs/engine/events/AllNotesOffEvent.hpp4
-rw-r--r--src/libs/engine/events/ClearPatchEvent.cpp4
-rw-r--r--src/libs/engine/events/ClearPatchEvent.hpp2
-rw-r--r--src/libs/engine/events/ConnectionEvent.cpp4
-rw-r--r--src/libs/engine/events/ConnectionEvent.hpp2
-rw-r--r--src/libs/engine/events/CreatePatchEvent.cpp4
-rw-r--r--src/libs/engine/events/CreatePatchEvent.hpp4
-rw-r--r--src/libs/engine/events/DSSIConfigureEvent.cpp2
-rw-r--r--src/libs/engine/events/DSSIConfigureEvent.hpp2
-rw-r--r--src/libs/engine/events/DSSIControlEvent.cpp2
-rw-r--r--src/libs/engine/events/DSSIControlEvent.hpp2
-rw-r--r--src/libs/engine/events/DSSIProgramEvent.cpp2
-rw-r--r--src/libs/engine/events/DSSIProgramEvent.hpp2
-rw-r--r--src/libs/engine/events/DSSIUpdateEvent.cpp2
-rw-r--r--src/libs/engine/events/DSSIUpdateEvent.hpp2
-rw-r--r--src/libs/engine/events/DeactivateEvent.cpp4
-rw-r--r--src/libs/engine/events/DeactivateEvent.hpp2
-rw-r--r--src/libs/engine/events/DestroyEvent.cpp6
-rw-r--r--src/libs/engine/events/DestroyEvent.hpp4
-rw-r--r--src/libs/engine/events/DisablePatchEvent.cpp4
-rw-r--r--src/libs/engine/events/DisablePatchEvent.hpp2
-rw-r--r--src/libs/engine/events/DisconnectNodeEvent.cpp6
-rw-r--r--src/libs/engine/events/DisconnectNodeEvent.hpp8
-rw-r--r--src/libs/engine/events/DisconnectPortEvent.cpp6
-rw-r--r--src/libs/engine/events/DisconnectPortEvent.hpp2
-rw-r--r--src/libs/engine/events/DisconnectionEvent.cpp6
-rw-r--r--src/libs/engine/events/DisconnectionEvent.hpp8
-rw-r--r--src/libs/engine/events/EnablePatchEvent.cpp4
-rw-r--r--src/libs/engine/events/EnablePatchEvent.hpp2
-rw-r--r--src/libs/engine/events/LoadPluginsEvent.cpp4
-rw-r--r--src/libs/engine/events/LoadPluginsEvent.hpp2
-rw-r--r--src/libs/engine/events/MidiLearnEvent.cpp4
-rw-r--r--src/libs/engine/events/MidiLearnEvent.hpp4
-rw-r--r--src/libs/engine/events/NoteOffEvent.cpp6
-rw-r--r--src/libs/engine/events/NoteOffEvent.hpp4
-rw-r--r--src/libs/engine/events/NoteOnEvent.cpp6
-rw-r--r--src/libs/engine/events/NoteOnEvent.hpp4
-rw-r--r--src/libs/engine/events/PingQueuedEvent.hpp4
-rw-r--r--src/libs/engine/events/RegisterClientEvent.cpp4
-rw-r--r--src/libs/engine/events/RegisterClientEvent.hpp4
-rw-r--r--src/libs/engine/events/RenameEvent.cpp4
-rw-r--r--src/libs/engine/events/RenameEvent.hpp2
-rw-r--r--src/libs/engine/events/RequestAllObjectsEvent.cpp12
-rw-r--r--src/libs/engine/events/RequestAllObjectsEvent.hpp5
-rw-r--r--src/libs/engine/events/RequestMetadataEvent.cpp15
-rw-r--r--src/libs/engine/events/RequestMetadataEvent.hpp3
-rw-r--r--src/libs/engine/events/RequestObjectEvent.cpp13
-rw-r--r--src/libs/engine/events/RequestObjectEvent.hpp7
-rw-r--r--src/libs/engine/events/RequestPluginEvent.cpp9
-rw-r--r--src/libs/engine/events/RequestPluginEvent.hpp7
-rw-r--r--src/libs/engine/events/RequestPluginsEvent.cpp10
-rw-r--r--src/libs/engine/events/RequestPluginsEvent.hpp5
-rw-r--r--src/libs/engine/events/RequestPortValueEvent.cpp9
-rw-r--r--src/libs/engine/events/RequestPortValueEvent.hpp9
-rw-r--r--src/libs/engine/events/SetMetadataEvent.cpp4
-rw-r--r--src/libs/engine/events/SetMetadataEvent.hpp2
-rw-r--r--src/libs/engine/events/SetPortValueEvent.cpp6
-rw-r--r--src/libs/engine/events/SetPortValueEvent.hpp4
-rw-r--r--src/libs/engine/events/SetPortValueQueuedEvent.cpp6
-rw-r--r--src/libs/engine/events/SetPortValueQueuedEvent.hpp4
-rw-r--r--src/libs/engine/events/UnregisterClientEvent.cpp4
-rw-r--r--src/libs/engine/events/UnregisterClientEvent.hpp2
-rw-r--r--src/libs/gui/App.cpp2
-rw-r--r--src/libs/gui/ConnectWindow.cpp19
-rw-r--r--src/libs/gui/ConnectWindow.hpp2
93 files changed, 563 insertions, 822 deletions
diff --git a/src/bindings/Client.hpp b/src/bindings/Client.hpp
index aeca11d7..c160f3fa 100644
--- a/src/bindings/Client.hpp
+++ b/src/bindings/Client.hpp
@@ -5,86 +5,86 @@
class Client : public Ingen::Shared::ClientInterface
{
public:
- //Client() : Ingen::Shared::ClientInterface() {}
-
/** Wrapper for engine->register_client to appease SWIG */
virtual void subscribe(Ingen::Shared::EngineInterface* engine) {
- engine->register_client("FIXME", this);
+ engine->register_client(this);
}
- virtual void response(int32_t id, bool success, std::string msg) {}
+ virtual void response_ok(int32_t id) {}
+
+ virtual void response_error(int32_t id, const std::string& msg) {}
- virtual void enable() {}
+ virtual void enable() {}
/** Signifies the client does not wish to receive any messages until
* enable is called. Useful for performance and avoiding feedback.
*/
- virtual void disable() {}
+ virtual void disable() {}
/** Bundles are a group of messages that are guaranteed to be in an
* atomic unit with guaranteed order (eg a packet). For datagram
* protocols (like UDP) there is likely an upper limit on bundle size.
*/
- virtual void bundle_begin() {}
- virtual void bundle_end() {}
+ virtual void bundle_begin() {}
+ virtual void bundle_end() {}
/** Transfers are 'weak' bundles. These are used to break a large group
* of similar/related messages into larger chunks (solely for communication
* efficiency). A bunch of messages in a transfer will arrive as 1 or more
- * bundles (so a transfer can exceep the maximum bundle (packet) size).
+ * bundles (so a transfer can exceed the maximum bundle (packet) size).
*/
- virtual void transfer_begin() {}
- virtual void transfer_end() {}
+ virtual void transfer_begin() {}
+ virtual void transfer_end() {}
- virtual void error(std::string msg) {}
+ virtual void error(const std::string& msg) {}
- virtual void num_plugins(uint32_t num_plugins) {}
+ virtual void num_plugins(uint32_t num_plugins) {}
- virtual void new_plugin(std::string uri,
- std::string type_uri,
- std::string name) {}
+ virtual void new_plugin(const std::string& uri,
+ const std::string& type_uri,
+ const std::string& name) {}
- virtual void new_patch(std::string path, uint32_t poly) {}
+ virtual void new_patch(const std::string& path, uint32_t poly) {}
- virtual void new_node(std::string plugin_uri,
- std::string node_path,
- bool is_polyphonic,
- uint32_t num_ports) {}
+ virtual void new_node(const std::string& plugin_uri,
+ const std::string& node_path,
+ bool is_polyphonic,
+ uint32_t num_ports) {}
- virtual void new_port(std::string path,
- std::string data_type,
- bool is_output) {}
+ virtual void new_port(const std::string& path,
+ const std::string& data_type,
+ bool is_output) {}
- virtual void patch_enabled(std::string path) {}
+ virtual void patch_enabled(const std::string& path) {}
- virtual void patch_disabled(std::string path) {}
+ virtual void patch_disabled(const std::string& path) {}
- virtual void patch_cleared(std::string path) {}
+ virtual void patch_cleared(const std::string& path) {}
- virtual void object_renamed(std::string old_path,
- std::string new_path) {}
+ virtual void object_renamed(const std::string& old_path,
+ const std::string& new_path) {}
- virtual void object_destroyed(std::string path) {}
+ virtual void object_destroyed(const std::string& path) {}
- virtual void connection(std::string src_port_path,
- std::string dst_port_path) {}
+ virtual void connection(const std::string& src_port_path,
+ const std::string& dst_port_path) {}
- virtual void disconnection(std::string src_port_path,
- std::string dst_port_path) {}
+ virtual void disconnection(const std::string& src_port_path,
+ const std::string& dst_port_path) {}
- virtual void metadata_update(std::string subject_path,
- std::string predicate,
- Raul::Atom value) {}
+ virtual void metadata_update(const std::string& subject_path,
+ const std::string& predicate,
+ const Raul::Atom& value) {}
- virtual void control_change(std::string port_path,
- float value) {}
+ virtual void control_change(const std::string& port_path,
+ float value) {}
- virtual void program_add(std::string node_path,
- uint32_t bank,
- uint32_t program,
- std::string program_name) {}
+ virtual void program_add(const std::string& node_path,
+ uint32_t bank,
+ uint32_t program,
+ const std::string& program_name) {}
- virtual void program_remove(std::string node_path,
- uint32_t bank,
- uint32_t program) {}
+ virtual void program_remove(const std::string& node_path,
+ uint32_t bank,
+ uint32_t program) {}
};
diff --git a/src/common/interface/ClientInterface.hpp b/src/common/interface/ClientInterface.hpp
index a13b870c..4993c4f5 100644
--- a/src/common/interface/ClientInterface.hpp
+++ b/src/common/interface/ClientInterface.hpp
@@ -18,6 +18,7 @@
#ifndef CLIENTINTERFACE_H
#define CLIENTINTERFACE_H
+#include <stdio.h>
#include <string>
#include <inttypes.h>
#include <raul/Atom.hpp>
@@ -38,10 +39,11 @@ public:
virtual ~ClientInterface() {}
- /** Wrapper for engine->register_client to appease SWIG */
- virtual void subscribe(EngineInterface* engine) = 0;
-
- virtual void response(int32_t id, bool success, std::string msg) = 0;
+ inline const std::string& uri() const { return _uri; }
+
+ virtual void response_ok(int32_t id) = 0;
+
+ virtual void response_error(int32_t id, const std::string& msg) = 0;
virtual void enable() = 0;
@@ -60,65 +62,72 @@ public:
/** Transfers are 'weak' bundles. These are used to break a large group
* of similar/related messages into larger chunks (solely for communication
* efficiency). A bunch of messages in a transfer will arrive as 1 or more
- * bundles (so a transfer can exceep the maximum bundle (packet) size).
+ * bundles (so a transfer can exceed the maximum bundle (packet) size).
*/
virtual void transfer_begin() = 0;
virtual void transfer_end() = 0;
- virtual void error(std::string msg) = 0;
+ virtual void error(const std::string& msg) = 0;
virtual void num_plugins(uint32_t num_plugins) = 0;
- virtual void new_plugin(std::string uri,
- std::string type_uri,
- std::string name) = 0;
+ virtual void new_plugin(const std::string& uri,
+ const std::string& type_uri,
+ const std::string& name) = 0;
- virtual void new_patch(std::string path, uint32_t poly) = 0;
+ virtual void new_patch(const std::string& path, uint32_t poly) = 0;
- virtual void new_node(std::string plugin_uri,
- std::string node_path,
- bool is_polyphonic,
- uint32_t num_ports) = 0;
+ virtual void new_node(const std::string& plugin_uri,
+ const std::string& node_path,
+ bool is_polyphonic,
+ uint32_t num_ports) = 0;
- virtual void new_port(std::string path,
- std::string data_type,
- bool is_output) = 0;
+ virtual void new_port(const std::string& path,
+ const std::string& data_type,
+ bool is_output) = 0;
- virtual void patch_enabled(std::string path) = 0;
+ virtual void patch_enabled(const std::string& path) = 0;
- virtual void patch_disabled(std::string path) = 0;
+ virtual void patch_disabled(const std::string& path) = 0;
- virtual void patch_cleared(std::string path) = 0;
+ virtual void patch_cleared(const std::string& path) = 0;
- virtual void object_renamed(std::string old_path,
- std::string new_path) = 0;
+ virtual void object_renamed(const std::string& old_path,
+ const std::string& new_path) = 0;
- virtual void object_destroyed(std::string path) = 0;
+ virtual void object_destroyed(const std::string& path) = 0;
- virtual void connection(std::string src_port_path,
- std::string dst_port_path) = 0;
+ virtual void connection(const std::string& src_port_path,
+ const std::string& dst_port_path) = 0;
- virtual void disconnection(std::string src_port_path,
- std::string dst_port_path) = 0;
+ virtual void disconnection(const std::string& src_port_path,
+ const std::string& dst_port_path) = 0;
- virtual void metadata_update(std::string subject_path,
- std::string predicate,
- Raul::Atom value) = 0;
+ virtual void metadata_update(const std::string& subject_path,
+ const std::string& predicate,
+ const Raul::Atom& value) = 0;
- virtual void control_change(std::string port_path,
- float value) = 0;
+ virtual void control_change(const std::string& port_path,
+ float value) = 0;
- virtual void program_add(std::string node_path,
- uint32_t bank,
- uint32_t program,
- std::string program_name) = 0;
+ virtual void program_add(const std::string& node_path,
+ uint32_t bank,
+ uint32_t program,
+ const std::string& program_name) = 0;
- virtual void program_remove(std::string node_path,
- uint32_t bank,
- uint32_t program) = 0;
+ virtual void program_remove(const std::string& node_path,
+ uint32_t bank,
+ uint32_t program) = 0;
protected:
- ClientInterface() {}
+ ClientInterface(const std::string& uri) : _uri(uri) {}
+ ClientInterface() {
+ static char uri_buf[20];
+ snprintf(uri_buf, 127, "%p", this);
+ _uri = uri_buf;
+ }
+
+ std::string _uri;
};
diff --git a/src/common/interface/EngineInterface.hpp b/src/common/interface/EngineInterface.hpp
index 09860e31..192357a7 100644
--- a/src/common/interface/EngineInterface.hpp
+++ b/src/common/interface/EngineInterface.hpp
@@ -29,8 +29,6 @@ namespace Ingen {
/** Shared code used on both client side and engine side (abstract interfaces). */
namespace Shared {
-class Responder;
-
/** The (only) interface clients use to communicate with the engine.
*
@@ -42,12 +40,11 @@ public:
virtual ~EngineInterface() {}
// Responses
- virtual void set_responder(SharedPtr<Responder> responder) = 0;
virtual void set_next_response_id(int32_t id) = 0;
virtual void disable_responses() = 0;
// Client registration
- virtual void register_client(const string& uri, ClientInterface* client) = 0;
+ virtual void register_client(ClientInterface* client) = 0;
virtual void unregister_client(const string& uri) = 0;
@@ -112,9 +109,9 @@ public:
virtual void midi_learn(const string& node_path) = 0;
- virtual void set_metadata(const string& path,
- const string& predicate,
- const Raul::Atom& value) = 0;
+ virtual void set_metadata(const string& path,
+ const string& predicate,
+ const Raul::Atom& value) = 0;
// Requests //
diff --git a/src/common/interface/Responder.hpp b/src/common/interface/Responder.hpp
deleted file mode 100644
index 463a3471..00000000
--- a/src/common/interface/Responder.hpp
+++ /dev/null
@@ -1,71 +0,0 @@
-/* This file is part of Ingen.
- * Copyright (C) 2007 Dave Robillard <http://drobilla.net>
- *
- * Ingen is free software; you can redistribute it and/or modify it under the
- * terms of the GNU General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option) any later
- * version.
- *
- * Ingen is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef RESPONDER_H
-#define RESPONDER_H
-
-#include <inttypes.h>
-#include <string>
-#include <raul/SharedPtr.hpp>
-#include "interface/ClientInterface.hpp"
-
-namespace Ingen {
-namespace Shared {
-
-
-/** Class to handle responding to clients.
- *
- * This is an abstract base class to fully abstract the details of client
- * communication from the internals of the engine.
- *
- * Note that this class only handles sending responses to commands from
- * clients, (ie OK or an error), <b>not</b> notifications (ie new node,
- * disconnection) - that's what ClientInterface is for. If a command is
- * a request, the Responder can be used to find the ClientInterface
- * (by URI) which should receive the response.
- *
- * ClientInterface and Responder are seperate because responding might not
- * actually get exposed to the client interface (eg in simulated blocking
- * interfaces that wait for responses before returning).
- *
- * Note for messages that have a "response" and some broadcasted effect
- * (eg setting a port value) the "response" MUST be sent first since Responder
- * is responsible for controlling whether the client wishes to receive the
- * notification.
- */
-class Responder
-{
-public:
- Responder() {}
- virtual ~Responder() {}
-
- virtual std::string client_uri() { return ""; }
-
- virtual ClientInterface* client() { return NULL; }
-
- virtual void set_id(int32_t id) {}
-
- virtual void respond_ok() {}
- virtual void respond_error(const std::string& msg) {}
-};
-
-
-} // namespace Shared
-} // namespace Ingen
-
-#endif // RESPONDER_H
-
diff --git a/src/libs/client/OSCClientReceiver.cpp b/src/libs/client/OSCClientReceiver.cpp
index 96533db2..0479cea9 100644
--- a/src/libs/client/OSCClientReceiver.cpp
+++ b/src/libs/client/OSCClientReceiver.cpp
@@ -21,8 +21,9 @@
#include <cassert>
#include <cstring>
#include <iostream>
+#include <sstream>
-using std::cerr; using std::cout; using std::endl;
+using namespace std;
using namespace Raul;
namespace Ingen {
@@ -30,14 +31,14 @@ namespace Client {
OSCClientReceiver::OSCClientReceiver(int listen_port)
-: _listen_port(listen_port),
+: ClientInterface("localhost"),
_st(NULL)//,
// _receiving_node(false),
// _receiving_node_model(NULL),
// _receiving_node_num_ports(0),
// _num_received_ports(0)
{
- start();
+ start(false);
}
@@ -48,7 +49,7 @@ OSCClientReceiver::~OSCClientReceiver()
void
-OSCClientReceiver::start()
+OSCClientReceiver::start(bool dump_osc)
{
if (_st != NULL)
return;
@@ -57,12 +58,12 @@ OSCClientReceiver::start()
if (_listen_port != 0) {
char port_str[8];
snprintf(port_str, 8, "%d", _listen_port);
- _st = lo_server_thread_new(port_str, error_cb);
+ _st = lo_server_thread_new(port_str, lo_error_cb);
}
// Find a free port
if (!_st) {
- _st = lo_server_thread_new(NULL, error_cb);
+ _st = lo_server_thread_new(NULL, lo_error_cb);
_listen_port = lo_server_thread_get_port(_st);
}
@@ -74,11 +75,9 @@ OSCClientReceiver::start()
}
// Print all incoming messages
- lo_server_thread_add_method(_st, NULL, NULL, generic_cb, NULL);
+ if (dump_osc)
+ lo_server_thread_add_method(_st, NULL, NULL, generic_cb, NULL);
- //lo_server_thread_add_method(_st, "/ingen/response/ok", "i", om_response_ok_cb, this);
- //lo_server_thread_add_method(_st, "/ingen/response/error", "is", om_responseerror_cb, this);
-
setup_callbacks();
// Display any uncaught messages to the console
@@ -122,7 +121,7 @@ OSCClientReceiver::generic_cb(const char* path, const char* types, lo_arg** argv
void
-OSCClientReceiver::error_cb(int num, const char* msg, const char* path)
+OSCClientReceiver::lo_error_cb(int num, const char* msg, const char* path)
{
cerr << "Got error from server: " << msg << endl;
}
@@ -144,7 +143,8 @@ OSCClientReceiver::unknown_cb(const char* path, const char* types, lo_arg** argv
void
OSCClientReceiver::setup_callbacks()
{
- lo_server_thread_add_method(_st, "/ingen/response", "iis", response_cb, this);
+ lo_server_thread_add_method(_st, "/ingen/ok", "i", response_ok_cb, this);
+ lo_server_thread_add_method(_st, "/ingen/error", "is", response_error_cb, this);
lo_server_thread_add_method(_st, "/ingen/num_plugins", "i", num_plugins_cb, this);
lo_server_thread_add_method(_st, "/ingen/plugin", "sss", plugin_cb, this);
lo_server_thread_add_method(_st, "/ingen/new_patch", "si", new_patch_cb, this);
@@ -366,10 +366,20 @@ OSCClientReceiver::_control_change_cb(const char* path, const char* types, lo_ar
int
-OSCClientReceiver::_response_cb(const char* path, const char* types, lo_arg** argv, int argc, lo_message msg)
+OSCClientReceiver::_response_ok_cb(const char* path, const char* types, lo_arg** argv, int argc, lo_message msg)
+{
+ assert(!strcmp(types, "i"));
+ response_ok(argv[0]->i);
+
+ return 0;
+}
+
+
+int
+OSCClientReceiver::_response_error_cb(const char* path, const char* types, lo_arg** argv, int argc, lo_message msg)
{
- assert(!strcmp(types, "iis"));
- response(argv[0]->i, argv[1]->i, &argv[2]->s);
+ assert(!strcmp(types, "is"));
+ response_error(argv[0]->i, &argv[1]->s);
return 0;
}
diff --git a/src/libs/client/OSCClientReceiver.hpp b/src/libs/client/OSCClientReceiver.hpp
index b27e7f78..45273201 100644
--- a/src/libs/client/OSCClientReceiver.hpp
+++ b/src/libs/client/OSCClientReceiver.hpp
@@ -66,7 +66,7 @@ public:
//void enable() {}
//void disable() {}
- void start();
+ void start(bool dump_osc);
void stop();
int listen_port() { return _listen_port; }
@@ -75,7 +75,8 @@ public:
private:
void setup_callbacks();
- static void error_cb(int num, const char* msg, const char* path);
+ static void lo_error_cb(int num, const char* msg, const char* path);
+
static int generic_cb(const char* path, const char* types, lo_arg** argv, int argc, void* data, void* user_data);
static int unknown_cb(const char* path, const char* types, lo_arg** argv, int argc, void* data, void* osc_receiver);
@@ -83,7 +84,8 @@ private:
lo_server_thread _st;
LO_HANDLER(error);
- LO_HANDLER(response);
+ LO_HANDLER(response_ok);
+ LO_HANDLER(response_error);
LO_HANDLER(num_plugins);
LO_HANDLER(plugin);
LO_HANDLER(plugin_list_end);
diff --git a/src/libs/client/OSCEngineSender.cpp b/src/libs/client/OSCEngineSender.cpp
index 553b073c..76b094a0 100644
--- a/src/libs/client/OSCEngineSender.cpp
+++ b/src/libs/client/OSCEngineSender.cpp
@@ -107,7 +107,7 @@ OSCEngineSender::attach(int32_t ping_id, bool block)
* traversal. It is a parameter to remain compatible with EngineInterface.
*/
void
-OSCEngineSender::register_client(const string& uri, ClientInterface* client)
+OSCEngineSender::register_client(ClientInterface* client)
{
// FIXME: use parameters.. er, somehow.
assert(_engine_addr);
diff --git a/src/libs/client/OSCEngineSender.hpp b/src/libs/client/OSCEngineSender.hpp
index b1a3ae1e..fc3c100d 100644
--- a/src/libs/client/OSCEngineSender.hpp
+++ b/src/libs/client/OSCEngineSender.hpp
@@ -22,11 +22,9 @@
#include <string>
#include <lo/lo.h>
#include "interface/EngineInterface.hpp"
-#include "interface/Responder.hpp"
using std::string;
using Ingen::Shared::EngineInterface;
using Ingen::Shared::ClientInterface;
-using Ingen::Shared::Responder;
namespace Ingen {
namespace Client {
@@ -51,7 +49,6 @@ public:
inline size_t next_id()
{ int32_t ret = (_id == -1) ? -1 : _id++; return ret; }
- void set_responder(SharedPtr<Responder> responder) { throw; }
void set_next_response_id(int32_t id) { _id = id; }
void disable_responses() { _id = -1; }
@@ -61,7 +58,7 @@ public:
/* *** EngineInterface implementation below here *** */
// Client registration
- void register_client(const string& uri, ClientInterface* client);
+ void register_client(ClientInterface* client);
void unregister_client(const string& uri);
diff --git a/src/libs/client/SigClientInterface.hpp b/src/libs/client/SigClientInterface.hpp
index 58a3297a..bdb1ff23 100644
--- a/src/libs/client/SigClientInterface.hpp
+++ b/src/libs/client/SigClientInterface.hpp
@@ -43,7 +43,8 @@ public:
// Signal parameters match up directly with ClientInterface calls
- sigc::signal<void, int32_t, bool, string> response_sig;
+ sigc::signal<void, int32_t> response_ok_sig;
+ sigc::signal<void, int32_t, string> response_error_sig;
sigc::signal<void> bundle_begin_sig;
sigc::signal<void> bundle_end_sig;
sigc::signal<void, string> error_sig;
@@ -80,55 +81,58 @@ protected:
void num_plugins(uint32_t num) { num_plugins_sig.emit(num); }
- void response(int32_t id, bool success, string msg)
- { response_sig.emit(id, success, msg); }
+ void response_ok(int32_t id)
+ { response_ok_sig.emit(id); }
- void error(string msg)
+ void response_error(int32_t id, const string& msg)
+ { response_error_sig.emit(id, msg); }
+
+ void error(const string& msg)
{ error_sig.emit(msg); }
- void new_plugin(string uri, string type_uri, string name)
+ void new_plugin(const string& uri, const string& type_uri, const string& name)
{ new_plugin_sig.emit(uri, type_uri, name); }
- void new_patch(string path, uint32_t poly)
+ void new_patch(const string& path, uint32_t poly)
{ new_patch_sig.emit(path, poly); }
- void new_node(string plugin_uri, string node_path, bool is_polyphonic, uint32_t num_ports)
+ void new_node(const string& plugin_uri, const string& node_path, bool is_polyphonic, uint32_t num_ports)
{ new_node_sig.emit(plugin_uri, node_path, is_polyphonic, num_ports); }
- void new_port(string path, string data_type, bool is_output)
+ void new_port(const string& path, const string& data_type, bool is_output)
{ new_port_sig.emit(path, data_type, is_output); }
- void connection(string src_port_path, string dst_port_path)
+ void connection(const string& src_port_path, const string& dst_port_path)
{ connection_sig.emit(src_port_path, dst_port_path); }
- void object_destroyed(string path)
+ void object_destroyed(const string& path)
{ object_destroyed_sig.emit(path); }
- void patch_enabled(string path)
+ void patch_enabled(const string& path)
{ patch_enabled_sig.emit(path); }
- void patch_disabled(string path)
+ void patch_disabled(const string& path)
{ patch_disabled_sig.emit(path); }
- void patch_cleared(string path)
+ void patch_cleared(const string& path)
{ patch_cleared_sig.emit(path); }
- void object_renamed(string old_path, string new_path)
+ void object_renamed(const string& old_path, const string& new_path)
{ object_renamed_sig.emit(old_path, new_path); }
- void disconnection(string src_port_path, string dst_port_path)
+ void disconnection(const string& src_port_path, const string& dst_port_path)
{ disconnection_sig.emit(src_port_path, dst_port_path); }
- void metadata_update(string path, string key, Raul::Atom value)
+ void metadata_update(const string& path, const string& key, const Raul::Atom& value)
{ metadata_update_sig.emit(path, key, value); }
- void control_change(string port_path, float value)
+ void control_change(const string& port_path, float value)
{ control_change_sig.emit(port_path, value); }
- void program_add(string path, uint32_t bank, uint32_t program, string name)
+ void program_add(const string& path, uint32_t bank, uint32_t program, const string& name)
{ program_add_sig.emit(path, bank, program, name); }
- void program_remove(string path, uint32_t bank, uint32_t program)
+ void program_remove(const string& path, uint32_t bank, uint32_t program)
{ program_remove_sig.emit(path, bank, program); }
protected:
diff --git a/src/libs/client/ThreadedSigClientInterface.hpp b/src/libs/client/ThreadedSigClientInterface.hpp
index af321cab..ed9f0ed4 100644
--- a/src/libs/client/ThreadedSigClientInterface.hpp
+++ b/src/libs/client/ThreadedSigClientInterface.hpp
@@ -47,7 +47,8 @@ public:
ThreadedSigClientInterface(uint32_t queue_size)
: _enabled(true)
, _sigs(queue_size)
- , response_slot(response_sig.make_slot())
+ , response_ok_slot(response_ok_sig.make_slot())
+ , response_error_slot(response_error_sig.make_slot())
, error_slot(error_sig.make_slot())
, new_plugin_slot(new_plugin_sig.make_slot())
, new_patch_slot(new_patch_sig.make_slot())
@@ -82,55 +83,58 @@ public:
void num_plugins(uint32_t num) { _num_plugins = num; }
- void response(int32_t id, bool success, string msg)
- { push_sig(sigc::bind(response_slot, id, success, msg)); }
+ void response_ok(int32_t id)
+ { push_sig(sigc::bind(response_ok_slot, id)); }
+
+ void response_error(int32_t id, const string& msg)
+ { push_sig(sigc::bind(response_error_slot, id, msg)); }
- void error(string msg)
+ void error(const string& msg)
{ push_sig(sigc::bind(error_slot, msg)); }
- void new_plugin(string uri, string type_uri, string name)
+ void new_plugin(const string& uri, const string& type_uri, const string& name)
{ push_sig(sigc::bind(new_plugin_slot, uri, type_uri, name)); }
- void new_patch(string path, uint32_t poly)
+ void new_patch(const string& path, uint32_t poly)
{ push_sig(sigc::bind(new_patch_slot, path, poly)); }
- void new_node(string plugin_uri, string node_path, bool is_polyphonic, uint32_t num_ports)
+ void new_node(const string& plugin_uri, const string& node_path, bool is_polyphonic, uint32_t num_ports)
{ push_sig(sigc::bind(new_node_slot, plugin_uri, node_path, is_polyphonic, num_ports)); }
- void new_port(string path, string data_type, bool is_output)
+ void new_port(const string& path, const string& data_type, bool is_output)
{ push_sig(sigc::bind(new_port_slot, path, data_type, is_output)); }
- void connection(string src_port_path, string dst_port_path)
+ void connection(const string& src_port_path, const string& dst_port_path)
{ push_sig(sigc::bind(connection_slot, src_port_path, dst_port_path)); }
- void object_destroyed(string path)
+ void object_destroyed(const string& path)
{ push_sig(sigc::bind(object_destroyed_slot, path)); }
- void patch_enabled(string path)
+ void patch_enabled(const string& path)
{ push_sig(sigc::bind(patch_enabled_slot, path)); }
- void patch_disabled(string path)
+ void patch_disabled(const string& path)
{ push_sig(sigc::bind(patch_disabled_slot, path)); }
- void patch_cleared(string path)
+ void patch_cleared(const string& path)
{ push_sig(sigc::bind(patch_cleared_slot, path)); }
- void object_renamed(string old_path, string new_path)
+ void object_renamed(const string& old_path, const string& new_path)
{ push_sig(sigc::bind(object_renamed_slot, old_path, new_path)); }
- void disconnection(string src_port_path, string dst_port_path)
+ void disconnection(const string& src_port_path, const string& dst_port_path)
{ push_sig(sigc::bind(disconnection_slot, src_port_path, dst_port_path)); }
- void metadata_update(string path, string key, Raul::Atom value)
+ void metadata_update(const string& path, const string& key, const Raul::Atom& value)
{ push_sig(sigc::bind(metadata_update_slot, path, key, value)); }
- void control_change(string port_path, float value)
+ void control_change(const string& port_path, float value)
{ push_sig(sigc::bind(control_change_slot, port_path, value)); }
- void program_add(string path, uint32_t bank, uint32_t program, string name)
+ void program_add(const string& path, uint32_t bank, uint32_t program, const string& name)
{ push_sig(sigc::bind(program_add_slot, path, bank, program, name)); }
- void program_remove(string path, uint32_t bank, uint32_t program)
+ void program_remove(const string& path, uint32_t bank, uint32_t program)
{ push_sig(sigc::bind(program_remove_slot, path, bank, program)); }
/** Process all queued events - Called from GTK thread to emit signals. */
@@ -147,7 +151,8 @@ private:
sigc::slot<void> bundle_begin_slot;
sigc::slot<void> bundle_end_slot;
sigc::slot<void, uint32_t> num_plugins_slot;
- sigc::slot<void, int32_t, bool, string> response_slot;
+ sigc::slot<void, int32_t> response_ok_slot;
+ sigc::slot<void, int32_t, string> response_error_slot;
sigc::slot<void, string> error_slot;
sigc::slot<void, string, string, string> new_plugin_slot;
sigc::slot<void, string, uint32_t> new_patch_slot;
diff --git a/src/libs/engine/ClientBroadcaster.hpp b/src/libs/engine/ClientBroadcaster.hpp
index 034476f5..40fef365 100644
--- a/src/libs/engine/ClientBroadcaster.hpp
+++ b/src/libs/engine/ClientBroadcaster.hpp
@@ -37,7 +37,6 @@ class Port;
class Plugin;
class Patch;
class Connection;
-namespace Shared { class Responder; }
using Shared::ClientInterface;
diff --git a/src/libs/engine/Event.hpp b/src/libs/engine/Event.hpp
index 8814cbae..fe0112d3 100644
--- a/src/libs/engine/Event.hpp
+++ b/src/libs/engine/Event.hpp
@@ -21,18 +21,13 @@
#include <cassert>
#include <raul/SharedPtr.hpp>
#include <raul/Deletable.hpp>
-#include "interface/Responder.hpp"
#include "types.hpp"
#include "ThreadManager.hpp"
-namespace Raul { class Path; }
-using Raul::Path;
-
-using Ingen::Shared::Responder;
-
namespace Ingen {
class Engine;
+class Responder;
/** Base class for all events (both realtime and QueuedEvent).
@@ -75,17 +70,17 @@ public:
inline SampleCount time() { return _time; }
protected:
- Event(Engine& engine, SharedPtr<Shared::Responder> responder, FrameTime time)
+ Event(Engine& engine, SharedPtr<Responder> responder, FrameTime time)
: _engine(engine)
, _responder(responder)
, _time(time)
, _executed(false)
{}
- Engine& _engine;
- SharedPtr<Shared::Responder> _responder;
- FrameTime _time;
- bool _executed;
+ Engine& _engine;
+ SharedPtr<Responder> _responder;
+ FrameTime _time;
+ bool _executed;
};
diff --git a/src/libs/engine/Makefile.am b/src/libs/engine/Makefile.am
index 72cea433..7f87c479 100644
--- a/src/libs/engine/Makefile.am
+++ b/src/libs/engine/Makefile.am
@@ -31,7 +31,6 @@ libingen_engine_la_SOURCES = \
Connection.cpp \
Connection.hpp \
DataType.hpp \
- DirectResponder.hpp \
Driver.hpp \
DuplexPort.cpp \
DuplexPort.hpp \
@@ -69,8 +68,7 @@ libingen_engine_la_SOURCES = \
OSCDriver.hpp \
OSCEngineReceiver.cpp \
OSCEngineReceiver.hpp \
- OSCResponder.cpp \
- OSCResponder.hpp \
+ Responder.hpp \
ObjectSender.cpp \
ObjectSender.hpp \
ObjectStore.cpp \
diff --git a/src/libs/engine/OSCClientSender.cpp b/src/libs/engine/OSCClientSender.cpp
index 23144978..66b1ed02 100644
--- a/src/libs/engine/OSCClientSender.cpp
+++ b/src/libs/engine/OSCClientSender.cpp
@@ -30,8 +30,8 @@
#include "Connection.hpp"
#include "AudioDriver.hpp"
#include "interface/ClientInterface.hpp"
-#include "interface/Responder.hpp"
-using std::cout; using std::cerr; using std::endl;
+
+using namespace std;
namespace Ingen {
@@ -96,23 +96,39 @@ OSCClientSender::transfer_end()
* \n
* <h2>Control Band</h2>
*/
+
+/** \page client_osc_namespace
+ * <p> \b /ingen/ok - Respond to a successful user command
+ * \arg \b response-id (int) - Request ID this is a response to
+ * </p> \n \n
+ */
+void
+OSCClientSender::response_ok(int32_t id)
+{
+ if (!_enabled)
+ return;
+
+ if (lo_send(_address, "/ingen/ok", "i", id) < 0) {
+ cerr << "Unable to send ok " << id << "! ("
+ << lo_address_errstr(_address) << ")" << endl;
+ }
+}
/** \page client_osc_namespace
* <p> \b /ingen/response - Respond to a user command
* \arg \b response-id (int) - Request ID this is a response to
- * \arg \b success (boolean int) - Whether response is affirmative or an error
- * \arg \b message (string) - Error message (natural language text)
+ * \arg \b message (const std::string&) - Error message (natural language text)
* </p> \n \n
*/
void
-OSCClientSender::response(int32_t id, bool success, string msg)
+OSCClientSender::response_error(int32_t id, const std::string& msg)
{
if (!_enabled)
return;
- if (lo_send(_address, "/ingen/response", "iis", id, success ? 1 : 0, msg.c_str()) < 0) {
- cerr << "Unable to send response " << id << "! ("
+ if (lo_send(_address, "/ingen/error", "is", id, msg.c_str()) < 0) {
+ cerr << "Unable to send error " << id << "! ("
<< lo_address_errstr(_address) << ")" << endl;
}
}
@@ -126,12 +142,12 @@ OSCClientSender::response(int32_t id, bool success, string msg)
/** \page client_osc_namespace
* <p> \b /ingen/error - Notification that an error has occurred
- * \arg \b message (string) - Error message (natural language text) \n\n
+ * \arg \b message (const std::string&) - Error message (natural language text) \n\n
* \li This is for notification of errors that aren't a direct response to a
* user command, ie "unexpected" errors.</p> \n \n
*/
void
-OSCClientSender::error(string msg)
+OSCClientSender::error(const std::string& msg)
{
if (!_enabled)
return;
@@ -168,11 +184,11 @@ OSCClientSender::num_plugins(uint32_t num)
/** \page client_osc_namespace
* <p> \b /ingen/plugin - Notification of the existance of a plugin
- * \arg \b type (string) - Type if plugin ("LADSPA", "DSSI", or "Internal")
- * \arg \b uri (string) - URI of the plugin (see engine namespace documentation) \n
- * \arg \b lib-name (string) - Name of shared library plugin resides in (ie "cmt.so")
- * \arg \b plug-label (string) - Label of the plugin (ie "dahdsr_iaoa")
- * \arg \b name (string) - Descriptive human-readable name of plugin (ie "ADSR Envelope")
+ * \arg \b type (const std::string&) - Type if plugin ("LADSPA", "DSSI", or "Internal")
+ * \arg \b uri (const std::string&) - URI of the plugin (see engine namespace documentation) \n
+ * \arg \b lib-name (const std::string&) - Name of shared library plugin resides in (ie "cmt.so")
+ * \arg \b plug-label (const std::string&) - Label of the plugin (ie "dahdsr_iaoa")
+ * \arg \b name (const std::string&) - Descriptive human-readable name of plugin (ie "ADSR Envelope")
* </p> \n \n
*/
/*
@@ -198,7 +214,7 @@ OSCClientSender::plugins()
plugin = (*j);
m = lo_message_new();
- lo_message_add_string(m, plugin->type_string());
+ lo_message_add_string(m, plugin->type_const std::string&());
lo_message_add_string(m, plugin->uri().c_str());
lo_message_add_string(m, plugin->plug_label().c_str());
lo_message_add_string(m, plugin->name().c_str());
@@ -226,16 +242,16 @@ OSCClientSender::plugins()
/** \page client_osc_namespace
* <p> \b /ingen/new_node - Notification of a new node's creation.
- * \arg \b plug-uri (string) - URI of the plugin new node is an instance of
- * \arg \b path (string) - Path of the new node
+ * \arg \b plug-uri (const std::string&) - URI of the plugin new node is an instance of
+ * \arg \b path (const std::string&) - Path of the new node
* \arg \b polyphonic (integer-boolean) - Node is polyphonic (1 = yes, 0 = no)
* \arg \b num-ports (integer) - Number of ports (number of new_port messages to expect)\n\n
* \li New nodes are sent as a bundle. The first message in the bundle will be
* this one (/ingen/new_node), followed by a series of /ingen/new_port commands,
* followed by /ingen/new_node_end. </p> \n \n
*/
-void OSCClientSender::new_node(string plugin_uri,
- string node_path,
+void OSCClientSender::new_node(const std::string& plugin_uri,
+ const std::string& node_path,
bool is_polyphonic,
uint32_t num_ports)
{
@@ -278,9 +294,9 @@ void OSCClientSender::new_node(string plugin_uri,
m = lo_message_new();
lo_message_add_string(m, port->path().c_str());
- lo_message_add_string(m, info->type_string().c_str());
- lo_message_add_string(m, info->direction_string().c_str());
- lo_message_add_string(m, info->hint_string().c_str());
+ lo_message_add_string(m, info->type_const std::string&().c_str());
+ lo_message_add_string(m, info->direction_const std::string&().c_str());
+ lo_message_add_string(m, info->hint_const std::string&().c_str());
lo_message_add_float(m, info->default_val());
lo_message_add_float(m, info->min_val());
lo_message_add_float(m, info->max_val());
@@ -309,17 +325,17 @@ void OSCClientSender::new_node(string plugin_uri,
usleep(100);
*/
/*
- const map<string, string>& data = node->metadata();
+ const map<const std::string&, const std::string&>& data = node->metadata();
// Send node metadata
- for (map<string, string>::const_iterator i = data.begin(); i != data.end(); ++i)
+ for (map<const std::string&, const std::string&>::const_iterator i = data.begin(); i != data.end(); ++i)
metadata_update(node->path(), (*i).first, (*i).second);
// Send port metadata
for (size_t j=0; j < ports.size(); ++j) {
port = ports.at(j);
- const map<string, string>& data = port->metadata();
- for (map<string, string>::const_iterator i = data.begin(); i != data.end(); ++i)
+ const map<const std::string&, const std::string&>& data = port->metadata();
+ for (map<const std::string&, const std::string&>::const_iterator i = data.begin(); i != data.end(); ++i)
metadata_update(port->path(), (*i).first, (*i).second);
}
@@ -337,8 +353,8 @@ void OSCClientSender::new_node(string plugin_uri,
/** \page client_osc_namespace
* <p> \b /ingen/new_port - Notification of a new port's creation.
- * \arg \b path (string) - Path of new port
- * \arg \b data-type (string) - Type of port (ingen:audio, ingen:control, ingen:midi, or ingen:osc)
+ * \arg \b path (const std::string&) - Path of new port
+ * \arg \b data-type (const std::string&) - Type of port (ingen:audio, ingen:control, ingen:midi, or ingen:osc)
* \arg \b direction ("is-output") (integer) - Direction of data flow (Input = 0, Output = 1)
*
* \li Note that in the event of loading a patch, this message could be
@@ -350,8 +366,8 @@ void OSCClientSender::new_node(string plugin_uri,
* as metadata.</p> \n \n
*/
void
-OSCClientSender::new_port(string path,
- string data_type,
+OSCClientSender::new_port(const std::string& path,
+ const std::string& data_type,
bool is_output)
{
if (!_enabled)
@@ -363,10 +379,10 @@ OSCClientSender::new_port(string path,
/** \page client_osc_namespace
* <p> \b /ingen/destroyed - Notification an object has been destroyed
- * \arg \b path (string) - Path of object (which no longer exists) </p> \n \n
+ * \arg \b path (const std::string&) - Path of object (which no longer exists) </p> \n \n
*/
void
-OSCClientSender::object_destroyed(string path)
+OSCClientSender::object_destroyed(const std::string& path)
{
if (!_enabled)
return;
@@ -379,10 +395,10 @@ OSCClientSender::object_destroyed(string path)
/** \page client_osc_namespace
* <p> \b /ingen/patch_cleared - Notification a patch has been cleared (all children destroyed)
- * \arg \b path (string) - Path of patch (which is now empty)</p> \n \n
+ * \arg \b path (const std::string&) - Path of patch (which is now empty)</p> \n \n
*/
void
-OSCClientSender::patch_cleared(string patch_path)
+OSCClientSender::patch_cleared(const std::string& patch_path)
{
if (!_enabled)
return;
@@ -393,10 +409,10 @@ OSCClientSender::patch_cleared(string patch_path)
/** \page client_osc_namespace
* <p> \b /ingen/patch_enabled - Notification a patch's DSP processing has been enabled.
- * \arg \b path (string) - Path of enabled patch</p> \n \n
+ * \arg \b path (const std::string&) - Path of enabled patch</p> \n \n
*/
void
-OSCClientSender::patch_enabled(string patch_path)
+OSCClientSender::patch_enabled(const std::string& patch_path)
{
if (!_enabled)
return;
@@ -407,10 +423,10 @@ OSCClientSender::patch_enabled(string patch_path)
/** \page client_osc_namespace
* <p> \b /ingen/patch_disabled - Notification a patch's DSP processing has been disabled.
- * \arg \b path (string) - Path of disabled patch</p> \n \n
+ * \arg \b path (const std::string&) - Path of disabled patch</p> \n \n
*/
void
-OSCClientSender::patch_disabled(string patch_path)
+OSCClientSender::patch_disabled(const std::string& patch_path)
{
if (!_enabled)
return;
@@ -421,11 +437,11 @@ OSCClientSender::patch_disabled(string patch_path)
/** \page client_osc_namespace
* <p> \b /ingen/new_connection - Notification a new connection has been made.
- * \arg \b src-path (string) - Path of the source port
- * \arg \b dst-path (string) - Path of the destination port</p> \n \n
+ * \arg \b src-path (const std::string&) - Path of the source port
+ * \arg \b dst-path (const std::string&) - Path of the destination port</p> \n \n
*/
void
-OSCClientSender::connection(string src_port_path, string dst_port_path)
+OSCClientSender::connection(const std::string& src_port_path, const std::string& dst_port_path)
{
if (!_enabled)
return;
@@ -436,11 +452,11 @@ OSCClientSender::connection(string src_port_path, string dst_port_path)
/** \page client_osc_namespace
* <p> \b /ingen/disconnection - Notification a connection has been unmade.
- * \arg \b src-path (string) - Path of the source port
- * \arg \b dst-path (string) - Path of the destination port</p> \n \n
+ * \arg \b src-path (const std::string&) - Path of the source port
+ * \arg \b dst-path (const std::string&) - Path of the destination port</p> \n \n
*/
void
-OSCClientSender::disconnection(string src_port_path, string dst_port_path)
+OSCClientSender::disconnection(const std::string& src_port_path, const std::string& dst_port_path)
{
if (!_enabled)
return;
@@ -451,12 +467,12 @@ OSCClientSender::disconnection(string src_port_path, string dst_port_path)
/** \page client_osc_namespace
* <p> \b /ingen/metadata_update - Notification of a piece of metadata.
- * \arg \b path (string) - Path of the object associated with metadata (can be a node, patch, or port)
- * \arg \b key (string)
- * \arg \b value (string)</p> \n \n
+ * \arg \b path (const std::string&) - Path of the object associated with metadata (can be a node, patch, or port)
+ * \arg \b key (const std::string&)
+ * \arg \b value (const std::string&)</p> \n \n
*/
void
-OSCClientSender::metadata_update(string path, string key, Atom value)
+OSCClientSender::metadata_update(const std::string& path, const std::string& key, const Atom& value)
{
if (!_enabled)
return;
@@ -471,14 +487,14 @@ OSCClientSender::metadata_update(string path, string key, Atom value)
/** \page client_osc_namespace
* <p> \b /ingen/control_change - Notification the value of a port has changed
- * \arg \b path (string) - Path of port
+ * \arg \b path (const std::string&) - Path of port
* \arg \b value (float) - New value of port
*
* \li This will only send updates for values set by clients of course - not values
* changing because of connections to other ports!</p> \n \n
*/
void
-OSCClientSender::control_change(string port_path, float value)
+OSCClientSender::control_change(const std::string& port_path, float value)
{
if (!_enabled)
return;
@@ -489,12 +505,12 @@ OSCClientSender::control_change(string port_path, float value)
/** \page client_osc_namespace
* <p> \b /ingen/plugin - Notification of the existance of a plugin
- * \arg \b type (string) - Type of plugin ("LADSPA", "DSSI", or "Internal")
- * \arg \b uri (string) - Type of plugin ("LADSPA", "DSSI", or "Internal")
- * \arg \b name (string) - Descriptive human-readable name of plugin (ie "ADSR Envelope")
+ * \arg \b type (const std::string&) - Type of plugin ("LADSPA", "DSSI", or "Internal")
+ * \arg \b uri (const std::string&) - Type of plugin ("LADSPA", "DSSI", or "Internal")
+ * \arg \b name (const std::string&) - Descriptive human-readable name of plugin (ie "ADSR Envelope")
*/
void
-OSCClientSender::new_plugin(string uri, string type_uri, string name)
+OSCClientSender::new_plugin(const std::string& uri, const std::string& type_uri, const std::string& name)
{
if (!_enabled)
return;
@@ -525,11 +541,11 @@ OSCClientSender::new_plugin(string uri, string type_uri, string name)
/** \page client_osc_namespace
* <p> \b /ingen/new_patch - Notification of a new patch
- * \arg \b path (string) - Path of new patch
+ * \arg \b path (const std::string&) - Path of new patch
* \arg \b poly (int) - Polyphony of new patch (\em not a boolean like new_node) </p> \n \n
*/
void
-OSCClientSender::new_patch(string path, uint32_t poly)
+OSCClientSender::new_patch(const std::string& path, uint32_t poly)
{
if (!_enabled)
return;
@@ -541,8 +557,8 @@ OSCClientSender::new_patch(string path, uint32_t poly)
patch_enabled(p->path());
// Send metadata
- const map<string, string>& data = p->metadata();
- for (map<string, string>::const_iterator i = data.begin(); i != data.end(); ++i) {
+ const map<const std::string&, const std::string&>& data = p->metadata();
+ for (map<const std::string&, const std::string&>::const_iterator i = data.begin(); i != data.end(); ++i) {
metadata_update(p->path(), (*i).first, (*i).second);
}
*/
@@ -551,11 +567,11 @@ OSCClientSender::new_patch(string path, uint32_t poly)
/** \page client_osc_namespace
* <p> \b /ingen/object_renamed - Notification of an object's renaming
- * \arg \b old-path (string) - Old path of object
- * \arg \b new-path (string) - New path of object </p> \n \n
+ * \arg \b old-path (const std::string&) - Old path of object
+ * \arg \b new-path (const std::string&) - New path of object </p> \n \n
*/
void
-OSCClientSender::object_renamed(string old_path, string new_path)
+OSCClientSender::object_renamed(const std::string& old_path, const std::string& new_path)
{
if (!_enabled)
return;
@@ -567,7 +583,7 @@ OSCClientSender::object_renamed(string old_path, string new_path)
/** Sends information about a program associated with a DSSI plugin node.
*/
void
-OSCClientSender::program_add(string node_path, uint32_t bank, uint32_t program, string name)
+OSCClientSender::program_add(const std::string& node_path, uint32_t bank, uint32_t program, const std::string& name)
{
if (!_enabled)
return;
@@ -578,7 +594,7 @@ OSCClientSender::program_add(string node_path, uint32_t bank, uint32_t program,
void
-OSCClientSender::program_remove(string node_path, uint32_t bank, uint32_t program)
+OSCClientSender::program_remove(const std::string& node_path, uint32_t bank, uint32_t program)
{
if (!_enabled)
return;
diff --git a/src/libs/engine/OSCClientSender.hpp b/src/libs/engine/OSCClientSender.hpp
index 6cf8abbe..1930e708 100644
--- a/src/libs/engine/OSCClientSender.hpp
+++ b/src/libs/engine/OSCClientSender.hpp
@@ -27,7 +27,8 @@
#include "types.hpp"
#include "interface/ClientInterface.hpp"
-using std::list; using std::string;
+using std::list;
+using std::string;
using std::cerr;
namespace Ingen {
@@ -40,29 +41,23 @@ namespace Ingen {
class OSCClientSender : public Shared::ClientInterface
{
public:
- OSCClientSender(const string& url)
- : _url(url),
- _address(lo_address_new_from_url(url.c_str())),
- _transfer(NULL),
- _enabled(true)
+ OSCClientSender(const std::string& url)
+ : Shared::ClientInterface(url)
+ , _address(lo_address_new_from_url(url.c_str()))
+ , _transfer(NULL)
+ , _enabled(true)
{}
virtual ~OSCClientSender()
{ lo_address_free(_address); }
- const string& url() const { return _url; }
- const lo_address address() const { return _address; }
+ const lo_address address() const { return _address; }
void subscribe(Shared::EngineInterface* engine) { }
- //void plugins(); // FIXME remove
-
-
-
/* *** ClientInterface Implementation Below *** */
-
- //void client_registration(string url, int client_id);
+ //void client_registration(const std::string& url, int client_id);
void enable() { _enabled = true; }
void disable() { _enabled = false; }
@@ -73,63 +68,63 @@ public:
void transfer_begin();
void transfer_end();
- void response(int32_t id, bool success, string msg);
+ void response_ok(int32_t id);
+ void response_error(int32_t id, const std::string& msg);
void num_plugins(uint32_t num);
- void error(string msg);
+ void error(const std::string& msg);
- virtual void new_plugin(string uri,
- string type_uri,
- string name);
+ virtual void new_plugin(const std::string& uri,
+ const std::string& type_uri,
+ const std::string& name);
- virtual void new_patch(string path, uint32_t poly);
+ virtual void new_patch(const std::string& path, uint32_t poly);
- virtual void new_node(string plugin_uri,
- string node_path,
- bool is_polyphonic,
- uint32_t num_ports);
+ virtual void new_node(const std::string& plugin_uri,
+ const std::string& node_path,
+ bool is_polyphonic,
+ uint32_t num_ports);
- virtual void new_port(string path,
- string data_type,
- bool is_output);
+ virtual void new_port(const std::string& path,
+ const std::string& data_type,
+ bool is_output);
- virtual void patch_enabled(string path);
+ virtual void patch_enabled(const std::string& path);
- virtual void patch_disabled(string path);
+ virtual void patch_disabled(const std::string& path);
- virtual void patch_cleared(string path);
+ virtual void patch_cleared(const std::string& path);
- virtual void object_destroyed(string path);
+ virtual void object_destroyed(const std::string& path);
- virtual void object_renamed(string old_path,
- string new_path);
+ virtual void object_renamed(const std::string& old_path,
+ const std::string& new_path);
- virtual void connection(string src_port_path,
- string dst_port_path);
+ virtual void connection(const std::string& src_port_path,
+ const std::string& dst_port_path);
- virtual void disconnection(string src_port_path,
- string dst_port_path);
+ virtual void disconnection(const std::string& src_port_path,
+ const std::string& dst_port_path);
- virtual void metadata_update(string subject_path,
- string predicate,
- Raul::Atom value);
+ virtual void metadata_update(const std::string& subject_path,
+ const std::string& predicate,
+ const Raul::Atom& value);
- virtual void control_change(string port_path,
- float value);
+ virtual void control_change(const std::string& port_path,
+ float value);
- virtual void program_add(string node_path,
- uint32_t bank,
- uint32_t program,
- string program_name);
+ virtual void program_add(const std::string& node_path,
+ uint32_t bank,
+ uint32_t program,
+ const std::string& program_name);
- virtual void program_remove(string node_path,
- uint32_t bank,
- uint32_t program);
+ virtual void program_remove(const std::string& node_path,
+ uint32_t bank,
+ uint32_t program);
private:
- string _url;
- lo_address _address;
+ lo_address _address;
lo_bundle _transfer;
diff --git a/src/libs/engine/OSCEngineReceiver.cpp b/src/libs/engine/OSCEngineReceiver.cpp
index a2b98017..75be643c 100644
--- a/src/libs/engine/OSCEngineReceiver.cpp
+++ b/src/libs/engine/OSCEngineReceiver.cpp
@@ -26,10 +26,9 @@
#include "OSCEngineReceiver.hpp"
#include "QueuedEventSource.hpp"
#include "OSCClientSender.hpp"
-#include "OSCResponder.hpp"
#include "ClientBroadcaster.hpp"
-using std::cerr; using std::cout; using std::endl;
+using namespace std;
namespace Ingen {
@@ -46,9 +45,8 @@ namespace Ingen {
OSCEngineReceiver::OSCEngineReceiver(Engine& engine, size_t queue_size, uint16_t port)
-: QueuedEngineInterface(engine, queue_size, queue_size), // FIXME
- _server(NULL),
- _osc_responder(SharedPtr<OSCResponder>())
+ : QueuedEngineInterface(engine, queue_size, queue_size) // FIXME
+ , _server(NULL)
{
char port_str[6];
snprintf(port_str, 6, "%u", port);
@@ -205,60 +203,27 @@ OSCEngineReceiver::set_response_address_cb(const char* path, const char* types,
{
OSCEngineReceiver* const me = reinterpret_cast<OSCEngineReceiver*>(user_data);
- //cerr << "SET RESPONSE\n";
-
if (argc < 1 || types[0] != 'i') // Not a valid Ingen message
return 0; // Save liblo the trouble
- //cerr << "** valid msg\n";
-
const int id = argv[0]->i;
const lo_address addr = lo_message_get_source(msg);
char* const url = lo_address_get_url(addr);
-
- // Need to respond
- if (id != -1) {
- //cerr << "** need to respond\n";
-
- // Currently have an OSC responder, check if it's still okay
- if (me->_responder == me->_osc_responder) {
- //cerr << "** osc responder\n";
- if (!strcmp(url, me->_osc_responder->url())) {
- // Nice one, same address, do nothing (just set the ID below)
- //cerr << "** Using cached response address, hooray" << endl;
- } else {
- // Shitty deal, make a new one
- //cerr << "** Setting response address to " << url << "(2)" << endl;
- me->_osc_responder = SharedPtr<OSCResponder>(
- new OSCResponder(me->_engine.broadcaster(), id, url));
-
- me->set_responder(me->_osc_responder);
-
- // (responder takes ownership of url, no leak)
- }
-
- // Otherwise we have a NULL responder, definitely need to set a new one
- } else {
- //cerr << "** null responder\n";
- me->_osc_responder = SharedPtr<OSCResponder>(new OSCResponder(me->_engine.broadcaster(), id, url));
- me->set_responder(me->_osc_responder);
- //cerr << "** Setting response address to " << url << "(2)" << endl;
- }
+ const SharedPtr<Responder> r = me->_responder;
- me->set_next_response_id(id);
+ /* Different address than last time, have to do a lookup */
+ if (!r || !r->client() || strcmp(url, r->client()->uri().c_str()))
+ me->_responder = SharedPtr<Responder>(
+ new Responder(me->_engine.broadcaster()->client(url), id));
- // Don't respond
+ if (id != -1) {
+ me->set_next_response_id(id);
} else {
me->disable_responses();
- ClientInterface* client = me->_engine.broadcaster()->client(url);
- if (client)
- client->disable();
- else
- cerr << "UNKNOWN CLIENT!\n";
-
- //cerr << "** Not responding." << endl;
+ if (me->_responder->client())
+ me->_responder->client()->disable();
}
// If this returns 0 no OSC commands will work
@@ -330,7 +295,7 @@ OSCEngineReceiver::_register_client_cb(const char* path, const char* types, lo_a
char* const url = lo_address_get_url(addr);
ClientInterface* client = new OSCClientSender((const char*)url);
- register_client(url, client);
+ register_client(client);
free(url);
return 0;
@@ -928,7 +893,7 @@ OSCEngineReceiver::unknown_cb(const char* path, const char* types, lo_arg** argv
string error_msg = "Unknown command: ";
error_msg.append(path).append(" ").append(types);
- OSCResponder(NULL, 0, url).respond_error(error_msg);
+ OSCClientSender(url).error(error_msg);
return 0;
}
diff --git a/src/libs/engine/OSCEngineReceiver.hpp b/src/libs/engine/OSCEngineReceiver.hpp
index a9e76ece..c08386ec 100644
--- a/src/libs/engine/OSCEngineReceiver.hpp
+++ b/src/libs/engine/OSCEngineReceiver.hpp
@@ -24,7 +24,7 @@
#include <lo/lo.h>
#include <raul/SharedPtr.hpp>
#include "QueuedEngineInterface.hpp"
-#include "OSCResponder.hpp"
+#include "Responder.hpp"
using std::string;
namespace Ingen {
@@ -117,9 +117,6 @@ private:
#endif
lo_server _server;
-
- /** Cached OSC responder (for most recent incoming message) */
- SharedPtr<OSCResponder> _osc_responder;
};
diff --git a/src/libs/engine/OSCResponder.cpp b/src/libs/engine/OSCResponder.cpp
deleted file mode 100644
index e43ba49a..00000000
--- a/src/libs/engine/OSCResponder.cpp
+++ /dev/null
@@ -1,98 +0,0 @@
-/* This file is part of Ingen.
- * Copyright (C) 2007 Dave Robillard <http://drobilla.net>
- *
- * Ingen is free software; you can redistribute it and/or modify it under the
- * terms of the GNU General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option) any later
- * version.
- *
- * Ingen is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include "OSCResponder.hpp"
-#include "ClientBroadcaster.hpp"
-#include <cstdlib>
-#include <iostream>
-#include <inttypes.h>
-#include <lo/lo.h>
-
-using std::cout; using std::cerr; using std::endl;
-
-namespace Ingen {
-
-
-/** Construct an OSCResponder from \a addr.
- * Takes ownership of @a url.
- */
-OSCResponder::OSCResponder(ClientBroadcaster* broadcaster, int32_t id, char* url)
-: Responder()
-, _broadcaster(broadcaster)
-, _id(id)
-, _url(url)
-, _addr(NULL)
-{
- // If ID is -1 this shouldn't have even been created
- assert(id != -1);
-}
-
-
-OSCResponder::~OSCResponder()
-{
- //cerr << "DELETING " << _url << " RESPONDER\n";
-
- if (_addr)
- lo_address_free(_addr);
-}
-
-
-void
-OSCResponder::respond_ok()
-{
- ClientInterface* client = this->client();
- if (client)
- client->enable();
-
- _addr = lo_address_new_from_url(_url);
-
- //cerr << "OK " << _id << endl;
- if (lo_send(_addr, "/ingen/response", "iis", _id, 1, "") < 0) {
- cerr << "Unable to send response " << _id << "! ("
- << lo_address_errstr(_addr) << ")" << endl;
- }
-}
-
-
-void
-OSCResponder::respond_error(const string& msg)
-{
- ClientInterface* client = this->client();
- if (client)
- client->enable();
-
- _addr = lo_address_new_from_url(_url);
-
- //cerr << "ERR " << _id << endl;
- if (lo_send(_addr, "/ingen/response", "iis",_id, 0, msg.c_str()) < 0) {
- cerr << "Unable to send response " << _id << "! ("
- << lo_address_errstr(_addr) << endl;
- }
-}
-
-
-ClientInterface*
-OSCResponder::client()
-{
- if (_broadcaster)
- return _broadcaster->client(client_uri());
- else
- return NULL;
-}
-
-} // namespace OM
-
diff --git a/src/libs/engine/OSCResponder.hpp b/src/libs/engine/OSCResponder.hpp
deleted file mode 100644
index e4049160..00000000
--- a/src/libs/engine/OSCResponder.hpp
+++ /dev/null
@@ -1,70 +0,0 @@
-/* This file is part of Ingen.
- * Copyright (C) 2007 Dave Robillard <http://drobilla.net>
- *
- * Ingen is free software; you can redistribute it and/or modify it under the
- * terms of the GNU General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option) any later
- * version.
- *
- * Ingen is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef OSCRESPONDER_H
-#define OSCRESPONDER_H
-
-#include <inttypes.h>
-#include <string>
-#include <memory>
-#include <lo/lo.h>
-#include "interface/Responder.hpp"
-
-namespace Ingen {
-
-class ClientBroadcaster;
-
-
-/** Responder for (liblo) OSC clients.
- *
- * OSC Clients use request IDs to be able to associate replies with sent
- * events. If the ID is -1, a response will not be sent (and the overhead
- * of searching for the client's record will be skipped). Any other integer
- * is a valid response ID and will be responded to.
- *
- * Creation of the lo_address is deferred until needed to avoid bogging down
- * the receiving thread as much as possible.
- */
-class OSCResponder : public Shared::Responder
-{
-public:
- OSCResponder(ClientBroadcaster* broadcaster, int32_t id, char* url);
- ~OSCResponder();
-
- void set_id(int32_t id) { _id = id; }
-
- void respond_ok();
- void respond_error(const std::string& msg);
-
- const char* url() const { return _url; }
-
- std::string client_uri() { return _url; }
-
- Shared::ClientInterface* client();
-
-private:
- ClientBroadcaster* _broadcaster;
- int32_t _id;
- char* const _url;
- lo_address _addr;
-};
-
-
-} // namespace Ingen
-
-#endif // OSCRESPONDER_H
-
diff --git a/src/libs/engine/QueuedEngineInterface.cpp b/src/libs/engine/QueuedEngineInterface.cpp
index a27a55f5..511246da 100644
--- a/src/libs/engine/QueuedEngineInterface.cpp
+++ b/src/libs/engine/QueuedEngineInterface.cpp
@@ -26,7 +26,7 @@ namespace Ingen {
QueuedEngineInterface::QueuedEngineInterface(Engine& engine, size_t queued_size, size_t stamped_size)
: QueuedEventSource(queued_size, stamped_size)
- , _responder(SharedPtr<Shared::Responder>(new Shared::Responder())) // NULL responder
+ , _responder(new Responder(NULL, 0))
, _engine(engine)
{
}
@@ -41,18 +41,6 @@ QueuedEngineInterface::now() const
}
-/** Set the Responder to send responses to commands with, once the commands
- * are preprocessed and ready to be executed (or not).
- *
- * Ownership of @a responder is taken.
- */
-void
-QueuedEngineInterface::set_responder(SharedPtr<Shared::Responder> responder)
-{
- _responder = responder;
-}
-
-
void
QueuedEngineInterface::set_next_response_id(int32_t id)
{
@@ -64,9 +52,8 @@ QueuedEngineInterface::set_next_response_id(int32_t id)
void
QueuedEngineInterface::disable_responses()
{
- static SharedPtr<Shared::Responder> null_responder(new Shared::Responder());
- //cerr << "DISABLE\n";
- set_responder(null_responder);
+ _responder->set_client(NULL);
+ _responder->set_id(0);
}
@@ -74,9 +61,15 @@ QueuedEngineInterface::disable_responses()
void
-QueuedEngineInterface::register_client(const string& uri, ClientInterface* client)
+QueuedEngineInterface::register_client(ClientInterface* client)
{
- push_queued(new RegisterClientEvent(_engine, _responder, now(), uri, client));
+ push_queued(new RegisterClientEvent(_engine, _responder, now(), client->uri(), client));
+ if (!_responder) {
+ _responder = SharedPtr<Responder>(new Responder(client, 1));
+ } else {
+ _responder->set_id(1);
+ _responder->set_client(client);
+ }
}
@@ -84,6 +77,10 @@ void
QueuedEngineInterface::unregister_client(const string& uri)
{
push_queued(new UnregisterClientEvent(_engine, _responder, now(), uri));
+ if (_responder && _responder->client() && _responder->client()->uri() == uri) {
+ _responder->set_id(0);
+ _responder->set_client(NULL);
+ }
}
diff --git a/src/libs/engine/QueuedEngineInterface.hpp b/src/libs/engine/QueuedEngineInterface.hpp
index 9d48074e..eb19923e 100644
--- a/src/libs/engine/QueuedEngineInterface.hpp
+++ b/src/libs/engine/QueuedEngineInterface.hpp
@@ -24,7 +24,7 @@
#include <raul/SharedPtr.hpp>
#include "interface/EngineInterface.hpp"
#include "interface/ClientInterface.hpp"
-#include "interface/Responder.hpp"
+#include "Responder.hpp"
#include "QueuedEventSource.hpp"
#include "Engine.hpp"
using std::string;
@@ -64,11 +64,8 @@ public:
void set_next_response_id(int32_t id);
- virtual void set_responder(SharedPtr<Shared::Responder> responder);
- virtual void disable_responses();
-
// Client registration
- virtual void register_client(const string& uri, ClientInterface* client);
+ virtual void register_client(ClientInterface* client);
virtual void unregister_client(const string& uri);
@@ -154,11 +151,11 @@ public:
virtual void request_all_objects();
protected:
+
+ virtual void disable_responses();
- /** Where responses to current messages will go. */
- SharedPtr<Shared::Responder> _responder;
-
- Engine& _engine;
+ SharedPtr<Responder> _responder; ///< NULL if responding disabled
+ Engine& _engine;
private:
SampleCount now() const;
diff --git a/src/libs/engine/QueuedEvent.hpp b/src/libs/engine/QueuedEvent.hpp
index 4afe509d..69baefe4 100644
--- a/src/libs/engine/QueuedEvent.hpp
+++ b/src/libs/engine/QueuedEvent.hpp
@@ -70,11 +70,11 @@ public:
bool is_prepared() { return _pre_processed; }
protected:
- QueuedEvent(Engine& engine,
- SharedPtr<Shared::Responder> responder,
- FrameTime time,
- bool blocking = false,
- QueuedEventSource* source = NULL)
+ QueuedEvent(Engine& engine,
+ SharedPtr<Responder> responder,
+ FrameTime time,
+ bool blocking = false,
+ QueuedEventSource* source = NULL)
: Event(engine, responder, time)
, _pre_processed(false), _blocking(blocking), _source(source)
{
@@ -84,7 +84,7 @@ protected:
// NULL event base (for internal events only!)
QueuedEvent(Engine& engine)
- : Event(engine, SharedPtr<Shared::Responder>(), 0)
+ : Event(engine, SharedPtr<Responder>(), 0)
, _pre_processed(false), _blocking(false), _source(NULL)
{}
diff --git a/src/libs/engine/DirectResponder.hpp b/src/libs/engine/Responder.hpp
index 7bd35dcd..80d2e24c 100644
--- a/src/libs/engine/DirectResponder.hpp
+++ b/src/libs/engine/Responder.hpp
@@ -15,31 +15,49 @@
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#ifndef DIRECTRESPONDER_H
-#define DIRECTRESPONDER_H
+#ifndef RESPONDER_H
+#define RESPONDER_H
+#include <inttypes.h>
+#include <string>
#include <raul/SharedPtr.hpp>
#include "interface/ClientInterface.hpp"
-#include "interface/Responder.hpp"
namespace Ingen {
-/** Responder for Direct clients (directly calls methods on a ClientInterface).
+/** Class to handle responding to clients.
+ *
+ * This is a glorified std::pair<ClientInterface*, int32_t> for replying
+ * to numbered messages from a client.
+ *
+ * For responses that involve more messages, the response will come first
+ * followed by the messages (eg object notifications, values, errors, etc.)
+ * in a bundle (or "transfer" if too large).
*/
-class DirectResponder : public Shared::Responder
+class Responder
{
public:
- DirectResponder(Shared::ClientInterface* client, int32_t id)
- : _client(client), _id(id)
+ Responder(Shared::ClientInterface* client=0, int32_t id=1)
+ : _client(client)
+ , _id(id)
{}
- void set_id(int32_t id) { _id = id; }
+ int32_t id() const { return _id; }
+ void set_id(int32_t id) { _id = id; }
- void respond_ok() { _client->response(_id, true, ""); }
- void respond_error(const string& msg) { _client->response(_id, false, msg); }
+ Shared::ClientInterface* client() const { return _client; }
+ void set_client(Shared::ClientInterface* client) { _client = client; }
- Shared::ClientInterface* client() { return _client; }
+ void respond_ok() {
+ if (_client)
+ _client->response_ok(_id);
+ }
+
+ void respond_error(const std::string& msg) {
+ if (_client)
+ _client->response_error(_id, msg);
+ }
private:
Shared::ClientInterface* _client;
@@ -49,5 +67,5 @@ private:
} // namespace Ingen
-#endif // DIRECTRESPONDER_H
+#endif // RESPONDER_H
diff --git a/src/libs/engine/events/AddNodeEvent.cpp b/src/libs/engine/events/AddNodeEvent.cpp
index f1aa3aed..e692a8ee 100644
--- a/src/libs/engine/events/AddNodeEvent.cpp
+++ b/src/libs/engine/events/AddNodeEvent.cpp
@@ -15,8 +15,11 @@
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#include <raul/Maid.hpp>
+#include <raul/Path.hpp>
+#include <raul/Path.hpp>
#include "AddNodeEvent.hpp"
-#include "interface/Responder.hpp"
+#include "Responder.hpp"
#include "Patch.hpp"
#include "Node.hpp"
#include "Tree.hpp"
@@ -25,16 +28,13 @@
#include "Patch.hpp"
#include "NodeFactory.hpp"
#include "ClientBroadcaster.hpp"
-#include <raul/Maid.hpp>
-#include <raul/Path.hpp>
#include "ObjectStore.hpp"
-#include <raul/Path.hpp>
#include "Port.hpp"
namespace Ingen {
-AddNodeEvent::AddNodeEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& path,
+AddNodeEvent::AddNodeEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& path,
const string& plugin_uri, bool poly)
: QueuedEvent(engine, responder, timestamp),
_path(path),
@@ -52,7 +52,7 @@ AddNodeEvent::AddNodeEvent(Engine& engine, SharedPtr<Shared::Responder> responde
*
* Do not use.
*/
-AddNodeEvent::AddNodeEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& path,
+AddNodeEvent::AddNodeEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& path,
const string& plugin_type, const string& plugin_lib, const string& plugin_label, bool poly)
: QueuedEvent(engine, responder, timestamp),
_path(path),
diff --git a/src/libs/engine/events/AddNodeEvent.hpp b/src/libs/engine/events/AddNodeEvent.hpp
index 0a64c93a..28df137c 100644
--- a/src/libs/engine/events/AddNodeEvent.hpp
+++ b/src/libs/engine/events/AddNodeEvent.hpp
@@ -41,7 +41,7 @@ class AddNodeEvent : public QueuedEvent
{
public:
AddNodeEvent(Engine& engine,
- SharedPtr<Shared::Responder> responder,
+ SharedPtr<Responder> responder,
SampleCount timestamp,
const string& node_path,
const string& plugin_uri,
@@ -49,7 +49,7 @@ public:
// DEPRECATED
AddNodeEvent(Engine& engine,
- SharedPtr<Shared::Responder> responder,
+ SharedPtr<Responder> responder,
SampleCount timestamp,
const string& node_path,
const string& plugin_type,
@@ -62,17 +62,17 @@ public:
void post_process();
private:
- string _patch_name;
- Path _path;
- string _plugin_uri; ///< If nonempty then type, library, label, are ignored
- string _plugin_type;
- string _plugin_lib;
- string _plugin_label;
- bool _poly;
- Patch* _patch;
- Node* _node;
- Raul::Array<Node*>* _process_order; ///< Patch's new process order
- bool _node_already_exists;
+ string _patch_name;
+ Raul::Path _path;
+ string _plugin_uri; ///< If nonempty then type, library, label, are ignored
+ string _plugin_type;
+ string _plugin_lib;
+ string _plugin_label;
+ bool _poly;
+ Patch* _patch;
+ Node* _node;
+ Raul::Array<Node*>* _process_order; ///< Patch's new process order
+ bool _node_already_exists;
};
diff --git a/src/libs/engine/events/AddPortEvent.cpp b/src/libs/engine/events/AddPortEvent.cpp
index c4da0cbf..1d016c5d 100644
--- a/src/libs/engine/events/AddPortEvent.cpp
+++ b/src/libs/engine/events/AddPortEvent.cpp
@@ -19,7 +19,7 @@
#include <raul/Array.hpp>
#include <raul/List.hpp>
#include <raul/Maid.hpp>
-#include "interface/Responder.hpp"
+#include "Responder.hpp"
#include "AddPortEvent.hpp"
#include "Patch.hpp"
#include "Tree.hpp"
@@ -39,7 +39,7 @@ namespace Ingen {
AddPortEvent::AddPortEvent(Engine& engine,
- SharedPtr<Shared::Responder> responder,
+ SharedPtr<Responder> responder,
SampleCount timestamp,
const string& path,
const string& type,
diff --git a/src/libs/engine/events/AddPortEvent.hpp b/src/libs/engine/events/AddPortEvent.hpp
index 803e0910..8b40d370 100644
--- a/src/libs/engine/events/AddPortEvent.hpp
+++ b/src/libs/engine/events/AddPortEvent.hpp
@@ -42,22 +42,22 @@ class DriverPort;
class AddPortEvent : public QueuedEvent
{
public:
- AddPortEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& path, const string& type, bool is_output, QueuedEventSource* source);
+ AddPortEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& path, const string& type, bool is_output, QueuedEventSource* source);
void pre_process();
void execute(SampleCount nframes, FrameTime start, FrameTime end);
void post_process();
private:
- Path _path;
- string _type;
- bool _is_output;
- DataType _data_type;
- Patch* _patch;
- Port* _patch_port;
+ Raul::Path _path;
+ string _type;
+ bool _is_output;
+ DataType _data_type;
+ Patch* _patch;
+ Port* _patch_port;
Raul::Array<Port*>* _ports_array; ///< New (external) ports array for Patch
- DriverPort* _driver_port; ///< Driver (eg Jack) port if this is a toplevel port
- bool _succeeded;
+ DriverPort* _driver_port; ///< Driver (eg Jack) port if this is a toplevel port
+ bool _succeeded;
};
diff --git a/src/libs/engine/events/AllNotesOffEvent.cpp b/src/libs/engine/events/AllNotesOffEvent.cpp
index 6be698c6..130fb794 100644
--- a/src/libs/engine/events/AllNotesOffEvent.cpp
+++ b/src/libs/engine/events/AllNotesOffEvent.cpp
@@ -16,7 +16,7 @@
*/
#include "AllNotesOffEvent.hpp"
-#include "interface/Responder.hpp"
+#include "Responder.hpp"
#include "Engine.hpp"
#include "ObjectStore.hpp"
@@ -25,7 +25,7 @@ namespace Ingen {
/** Note off with patch explicitly passed - triggered by MIDI.
*/
-AllNotesOffEvent::AllNotesOffEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, Patch* patch)
+AllNotesOffEvent::AllNotesOffEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, Patch* patch)
: Event(engine, responder, timestamp),
_patch(patch)
{
@@ -34,7 +34,7 @@ AllNotesOffEvent::AllNotesOffEvent(Engine& engine, SharedPtr<Shared::Responder>
/** Note off event with lookup - triggered by OSC.
*/
-AllNotesOffEvent::AllNotesOffEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& patch_path)
+AllNotesOffEvent::AllNotesOffEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& patch_path)
: Event(engine, responder, timestamp),
_patch(NULL),
_patch_path(patch_path)
diff --git a/src/libs/engine/events/AllNotesOffEvent.hpp b/src/libs/engine/events/AllNotesOffEvent.hpp
index 5e29f780..c9263a40 100644
--- a/src/libs/engine/events/AllNotesOffEvent.hpp
+++ b/src/libs/engine/events/AllNotesOffEvent.hpp
@@ -34,8 +34,8 @@ class Patch;
class AllNotesOffEvent : public Event
{
public:
- AllNotesOffEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, Patch* patch);
- AllNotesOffEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& patch_path);
+ AllNotesOffEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, Patch* patch);
+ AllNotesOffEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& patch_path);
void execute(SampleCount nframes, FrameTime start, FrameTime end);
void post_process();
diff --git a/src/libs/engine/events/ClearPatchEvent.cpp b/src/libs/engine/events/ClearPatchEvent.cpp
index 0269aaa7..2c991cf7 100644
--- a/src/libs/engine/events/ClearPatchEvent.cpp
+++ b/src/libs/engine/events/ClearPatchEvent.cpp
@@ -16,7 +16,7 @@
*/
#include "ClearPatchEvent.hpp"
-#include "interface/Responder.hpp"
+#include "Responder.hpp"
#include "Engine.hpp"
#include "Patch.hpp"
#include "ClientBroadcaster.hpp"
@@ -31,7 +31,7 @@
namespace Ingen {
-ClearPatchEvent::ClearPatchEvent(Engine& engine, SharedPtr<Shared::Responder> responder, FrameTime time, QueuedEventSource* source, const string& patch_path)
+ClearPatchEvent::ClearPatchEvent(Engine& engine, SharedPtr<Responder> responder, FrameTime time, QueuedEventSource* source, const string& patch_path)
: QueuedEvent(engine, responder, time, true, source),
_patch_path(patch_path),
_patch(NULL),
diff --git a/src/libs/engine/events/ClearPatchEvent.hpp b/src/libs/engine/events/ClearPatchEvent.hpp
index 4d631f07..dbcad25b 100644
--- a/src/libs/engine/events/ClearPatchEvent.hpp
+++ b/src/libs/engine/events/ClearPatchEvent.hpp
@@ -36,7 +36,7 @@ class Patch;
class ClearPatchEvent : public QueuedEvent
{
public:
- ClearPatchEvent(Engine& engine, SharedPtr<Shared::Responder> responder, FrameTime time, QueuedEventSource* source, const string& patch_path);
+ ClearPatchEvent(Engine& engine, SharedPtr<Responder> responder, FrameTime time, QueuedEventSource* source, const string& patch_path);
void pre_process();
void execute(SampleCount nframes, FrameTime start, FrameTime end);
diff --git a/src/libs/engine/events/ConnectionEvent.cpp b/src/libs/engine/events/ConnectionEvent.cpp
index 554a974f..a8c5dc13 100644
--- a/src/libs/engine/events/ConnectionEvent.cpp
+++ b/src/libs/engine/events/ConnectionEvent.cpp
@@ -19,7 +19,7 @@
#include <string>
#include <raul/Maid.hpp>
#include <raul/Path.hpp>
-#include "interface/Responder.hpp"
+#include "Responder.hpp"
#include "types.hpp"
#include "Engine.hpp"
#include "Connection.hpp"
@@ -34,7 +34,7 @@ using std::string;
namespace Ingen {
-ConnectionEvent::ConnectionEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& src_port_path, const string& dst_port_path)
+ConnectionEvent::ConnectionEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& src_port_path, const string& dst_port_path)
: QueuedEvent(engine, responder, timestamp),
_src_port_path(src_port_path),
_dst_port_path(dst_port_path),
diff --git a/src/libs/engine/events/ConnectionEvent.hpp b/src/libs/engine/events/ConnectionEvent.hpp
index f2903b94..1efcee1b 100644
--- a/src/libs/engine/events/ConnectionEvent.hpp
+++ b/src/libs/engine/events/ConnectionEvent.hpp
@@ -48,7 +48,7 @@ class OutputPort;
class ConnectionEvent : public QueuedEvent
{
public:
- ConnectionEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& src_port_path, const string& dst_port_path);
+ ConnectionEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& src_port_path, const string& dst_port_path);
void pre_process();
void execute(SampleCount nframes, FrameTime start, FrameTime end);
diff --git a/src/libs/engine/events/CreatePatchEvent.cpp b/src/libs/engine/events/CreatePatchEvent.cpp
index 93d56c86..6c0cd0e8 100644
--- a/src/libs/engine/events/CreatePatchEvent.cpp
+++ b/src/libs/engine/events/CreatePatchEvent.cpp
@@ -16,7 +16,7 @@
*/
#include "CreatePatchEvent.hpp"
-#include "interface/Responder.hpp"
+#include "Responder.hpp"
#include "Patch.hpp"
#include "Node.hpp"
#include "Tree.hpp"
@@ -31,7 +31,7 @@
namespace Ingen {
-CreatePatchEvent::CreatePatchEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& path, int poly)
+CreatePatchEvent::CreatePatchEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& path, int poly)
: QueuedEvent(engine, responder, timestamp),
_path(path),
_patch(NULL),
diff --git a/src/libs/engine/events/CreatePatchEvent.hpp b/src/libs/engine/events/CreatePatchEvent.hpp
index 977abbaa..1e45b353 100644
--- a/src/libs/engine/events/CreatePatchEvent.hpp
+++ b/src/libs/engine/events/CreatePatchEvent.hpp
@@ -41,7 +41,7 @@ class Plugin;
class CreatePatchEvent : public QueuedEvent
{
public:
- CreatePatchEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& path, int poly);
+ CreatePatchEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& path, int poly);
void pre_process();
void execute(SampleCount nframes, FrameTime start, FrameTime end);
@@ -50,7 +50,7 @@ public:
private:
enum ErrorType { NO_ERROR, OBJECT_EXISTS, PARENT_NOT_FOUND, INVALID_POLY };
- Path _path;
+ Raul::Path _path;
Patch* _patch;
Patch* _parent;
Raul::Array<Node*>* _process_order;
diff --git a/src/libs/engine/events/DSSIConfigureEvent.cpp b/src/libs/engine/events/DSSIConfigureEvent.cpp
index 9a0142c8..3c325f35 100644
--- a/src/libs/engine/events/DSSIConfigureEvent.cpp
+++ b/src/libs/engine/events/DSSIConfigureEvent.cpp
@@ -25,7 +25,7 @@
namespace Ingen {
-DSSIConfigureEvent::DSSIConfigureEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& node_path, const string& key, const string& val)
+DSSIConfigureEvent::DSSIConfigureEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& node_path, const string& key, const string& val)
: QueuedEvent(engine, responder, timestamp),
_node_path(node_path),
_key(key),
diff --git a/src/libs/engine/events/DSSIConfigureEvent.hpp b/src/libs/engine/events/DSSIConfigureEvent.hpp
index ef37c5cd..1ef43b50 100644
--- a/src/libs/engine/events/DSSIConfigureEvent.hpp
+++ b/src/libs/engine/events/DSSIConfigureEvent.hpp
@@ -31,7 +31,7 @@ namespace Ingen {
class DSSIConfigureEvent : public QueuedEvent
{
public:
- DSSIConfigureEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& node_path, const string& key, const string& val);
+ DSSIConfigureEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& node_path, const string& key, const string& val);
void pre_process();
void execute(SampleCount nframes, FrameTime start, FrameTime end);
diff --git a/src/libs/engine/events/DSSIControlEvent.cpp b/src/libs/engine/events/DSSIControlEvent.cpp
index eef5054b..f0c261b0 100644
--- a/src/libs/engine/events/DSSIControlEvent.cpp
+++ b/src/libs/engine/events/DSSIControlEvent.cpp
@@ -24,7 +24,7 @@
namespace Ingen {
-DSSIControlEvent::DSSIControlEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& node_path, int port_num, Sample val)
+DSSIControlEvent::DSSIControlEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& node_path, int port_num, Sample val)
: QueuedEvent(engine, responder, timestamp),
_node_path(node_path),
_port_num(port_num),
diff --git a/src/libs/engine/events/DSSIControlEvent.hpp b/src/libs/engine/events/DSSIControlEvent.hpp
index ab48607a..68314fd7 100644
--- a/src/libs/engine/events/DSSIControlEvent.hpp
+++ b/src/libs/engine/events/DSSIControlEvent.hpp
@@ -33,7 +33,7 @@ namespace Ingen {
class DSSIControlEvent : public QueuedEvent
{
public:
- DSSIControlEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& node_path, int port_num, Sample val);
+ DSSIControlEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& node_path, int port_num, Sample val);
void pre_process();
void execute(SampleCount nframes, FrameTime start, FrameTime end);
diff --git a/src/libs/engine/events/DSSIProgramEvent.cpp b/src/libs/engine/events/DSSIProgramEvent.cpp
index 66ad9c1f..9e12255d 100644
--- a/src/libs/engine/events/DSSIProgramEvent.cpp
+++ b/src/libs/engine/events/DSSIProgramEvent.cpp
@@ -29,7 +29,7 @@ using std::cout; using std::cerr; using std::endl;
namespace Ingen {
-DSSIProgramEvent::DSSIProgramEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& node_path, int bank, int program)
+DSSIProgramEvent::DSSIProgramEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& node_path, int bank, int program)
: QueuedEvent(engine, responder, timestamp),
_node_path(node_path),
_bank(bank),
diff --git a/src/libs/engine/events/DSSIProgramEvent.hpp b/src/libs/engine/events/DSSIProgramEvent.hpp
index 2f853961..fa4760ce 100644
--- a/src/libs/engine/events/DSSIProgramEvent.hpp
+++ b/src/libs/engine/events/DSSIProgramEvent.hpp
@@ -31,7 +31,7 @@ namespace Ingen {
class DSSIProgramEvent : public QueuedEvent
{
public:
- DSSIProgramEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& node_path, int bank, int program);
+ DSSIProgramEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& node_path, int bank, int program);
void pre_process();
void execute(SampleCount nframes, FrameTime start, FrameTime end);
diff --git a/src/libs/engine/events/DSSIUpdateEvent.cpp b/src/libs/engine/events/DSSIUpdateEvent.cpp
index 055be90c..bfb8f8fc 100644
--- a/src/libs/engine/events/DSSIUpdateEvent.cpp
+++ b/src/libs/engine/events/DSSIUpdateEvent.cpp
@@ -28,7 +28,7 @@ using std::cerr; using std::endl;
namespace Ingen {
-DSSIUpdateEvent::DSSIUpdateEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& path, const string& url)
+DSSIUpdateEvent::DSSIUpdateEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& path, const string& url)
: QueuedEvent(engine, responder, timestamp),
_path(path),
_url(url),
diff --git a/src/libs/engine/events/DSSIUpdateEvent.hpp b/src/libs/engine/events/DSSIUpdateEvent.hpp
index 699df4c2..08c5a31a 100644
--- a/src/libs/engine/events/DSSIUpdateEvent.hpp
+++ b/src/libs/engine/events/DSSIUpdateEvent.hpp
@@ -37,7 +37,7 @@ class DSSINode;
class DSSIUpdateEvent : public QueuedEvent
{
public:
- DSSIUpdateEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& path, const string& url);
+ DSSIUpdateEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& path, const string& url);
void pre_process();
void execute(SampleCount nframes, FrameTime start, FrameTime end);
diff --git a/src/libs/engine/events/DeactivateEvent.cpp b/src/libs/engine/events/DeactivateEvent.cpp
index 311cf287..a7842a0d 100644
--- a/src/libs/engine/events/DeactivateEvent.cpp
+++ b/src/libs/engine/events/DeactivateEvent.cpp
@@ -16,13 +16,13 @@
*/
#include "DeactivateEvent.hpp"
-#include "interface/Responder.hpp"
+#include "Responder.hpp"
#include "Engine.hpp"
namespace Ingen {
-DeactivateEvent::DeactivateEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp)
+DeactivateEvent::DeactivateEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp)
: QueuedEvent(engine, responder, timestamp)
{
}
diff --git a/src/libs/engine/events/DeactivateEvent.hpp b/src/libs/engine/events/DeactivateEvent.hpp
index 1f87e271..e0ee2ea8 100644
--- a/src/libs/engine/events/DeactivateEvent.hpp
+++ b/src/libs/engine/events/DeactivateEvent.hpp
@@ -30,7 +30,7 @@ namespace Ingen {
class DeactivateEvent : public QueuedEvent
{
public:
- DeactivateEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp);
+ DeactivateEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp);
void pre_process();
void execute(SampleCount nframes, FrameTime start, FrameTime end);
diff --git a/src/libs/engine/events/DestroyEvent.cpp b/src/libs/engine/events/DestroyEvent.cpp
index acc4a86d..a30bb3ae 100644
--- a/src/libs/engine/events/DestroyEvent.cpp
+++ b/src/libs/engine/events/DestroyEvent.cpp
@@ -16,7 +16,7 @@
*/
#include "DestroyEvent.hpp"
-#include "interface/Responder.hpp"
+#include "Responder.hpp"
#include "Engine.hpp"
#include "Patch.hpp"
#include "Tree.hpp"
@@ -37,7 +37,7 @@
namespace Ingen {
-DestroyEvent::DestroyEvent(Engine& engine, SharedPtr<Shared::Responder> responder, FrameTime time, QueuedEventSource* source, const string& path, bool block)
+DestroyEvent::DestroyEvent(Engine& engine, SharedPtr<Responder> responder, FrameTime time, QueuedEventSource* source, const string& path, bool block)
: QueuedEvent(engine, responder, time, source, source),
_path(path),
_store_iterator(engine.object_store()->objects().end()),
@@ -55,7 +55,7 @@ DestroyEvent::DestroyEvent(Engine& engine, SharedPtr<Shared::Responder> responde
}
#if 0
-DestroyEvent::DestroyEvent(Engine& engine, SharedPtr<Shared::Responder> responder, FrameTime time, QueuedEventSource* source, Node* node, bool block)
+DestroyEvent::DestroyEvent(Engine& engine, SharedPtr<Responder> responder, FrameTime time, QueuedEventSource* source, Node* node, bool block)
: QueuedEvent(engine, responder, block, source),
_path(node->path()),
_store_iterator(engine.object_store()->objects().end())
diff --git a/src/libs/engine/events/DestroyEvent.hpp b/src/libs/engine/events/DestroyEvent.hpp
index 70616ac1..a858ee0b 100644
--- a/src/libs/engine/events/DestroyEvent.hpp
+++ b/src/libs/engine/events/DestroyEvent.hpp
@@ -50,8 +50,8 @@ class DisconnectPortEvent;
class DestroyEvent : public QueuedEvent
{
public:
- DestroyEvent(Engine& engine, SharedPtr<Shared::Responder> responder, FrameTime timestamp, QueuedEventSource* source, const string& path, bool block = true);
- //DestroyEvent(Engine& engine, SharedPtr<Shared::Responder> responder, FrameTime timestamp, QueuedEventSource* source, Node* node, bool block = true);
+ DestroyEvent(Engine& engine, SharedPtr<Responder> responder, FrameTime timestamp, QueuedEventSource* source, const string& path, bool block = true);
+ //DestroyEvent(Engine& engine, SharedPtr<Responder> responder, FrameTime timestamp, QueuedEventSource* source, Node* node, bool block = true);
~DestroyEvent();
void pre_process();
diff --git a/src/libs/engine/events/DisablePatchEvent.cpp b/src/libs/engine/events/DisablePatchEvent.cpp
index 80ea96fa..146364d8 100644
--- a/src/libs/engine/events/DisablePatchEvent.cpp
+++ b/src/libs/engine/events/DisablePatchEvent.cpp
@@ -16,7 +16,7 @@
*/
#include "DisablePatchEvent.hpp"
-#include "interface/Responder.hpp"
+#include "Responder.hpp"
#include "Engine.hpp"
#include "Patch.hpp"
#include "ClientBroadcaster.hpp"
@@ -27,7 +27,7 @@
namespace Ingen {
-DisablePatchEvent::DisablePatchEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& patch_path)
+DisablePatchEvent::DisablePatchEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& patch_path)
: QueuedEvent(engine, responder, timestamp),
_patch_path(patch_path),
_patch(NULL)
diff --git a/src/libs/engine/events/DisablePatchEvent.hpp b/src/libs/engine/events/DisablePatchEvent.hpp
index 1552fffe..00cb5ce7 100644
--- a/src/libs/engine/events/DisablePatchEvent.hpp
+++ b/src/libs/engine/events/DisablePatchEvent.hpp
@@ -35,7 +35,7 @@ class Patch;
class DisablePatchEvent : public QueuedEvent
{
public:
- DisablePatchEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& patch_path);
+ DisablePatchEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& patch_path);
void pre_process();
void execute(SampleCount nframes, FrameTime start, FrameTime end);
diff --git a/src/libs/engine/events/DisconnectNodeEvent.cpp b/src/libs/engine/events/DisconnectNodeEvent.cpp
index abdad386..97dfc3d5 100644
--- a/src/libs/engine/events/DisconnectNodeEvent.cpp
+++ b/src/libs/engine/events/DisconnectNodeEvent.cpp
@@ -20,7 +20,7 @@
#include <raul/List.hpp>
#include <raul/Array.hpp>
#include <raul/Maid.hpp>
-#include "interface/Responder.hpp"
+#include "Responder.hpp"
#include "Engine.hpp"
#include "Node.hpp"
#include "Connection.hpp"
@@ -39,7 +39,7 @@ using std::cerr; using std::endl;
namespace Ingen {
-DisconnectNodeEvent::DisconnectNodeEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& node_path)
+DisconnectNodeEvent::DisconnectNodeEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& node_path)
: QueuedEvent(engine, responder, timestamp),
_node_path(node_path),
_patch(NULL),
@@ -99,7 +99,7 @@ DisconnectNodeEvent::pre_process()
for (ConnectionListIterator i = _patch->connections().begin(); i != _patch->connections().end(); ++i) {
c = (*i);
if ((c->src_port()->parent_node() == _node || c->dst_port()->parent_node() == _node) && !c->pending_disconnection()) {
- DisconnectionEvent* ev = new DisconnectionEvent(_engine, SharedPtr<Shared::Responder>(new Responder()), _time,
+ DisconnectionEvent* ev = new DisconnectionEvent(_engine, SharedPtr<Responder>(new Responder()), _time,
c->src_port(), c->dst_port());
ev->pre_process();
_disconnection_events.push_back(new Raul::ListNode<DisconnectionEvent*>(ev));
diff --git a/src/libs/engine/events/DisconnectNodeEvent.hpp b/src/libs/engine/events/DisconnectNodeEvent.hpp
index e14f87fa..9ed7cb3a 100644
--- a/src/libs/engine/events/DisconnectNodeEvent.hpp
+++ b/src/libs/engine/events/DisconnectNodeEvent.hpp
@@ -43,7 +43,7 @@ class OutputPort;
class DisconnectNodeEvent : public QueuedEvent
{
public:
- DisconnectNodeEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& node_path);
+ DisconnectNodeEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& node_path);
DisconnectNodeEvent(Engine& engine, Node* node);
~DisconnectNodeEvent();
@@ -52,9 +52,9 @@ public:
void post_process();
private:
- Path _node_path;
- Patch* _patch;
- Node* _node;
+ Raul::Path _node_path;
+ Patch* _patch;
+ Node* _node;
Raul::List<DisconnectionEvent*> _disconnection_events;
bool _succeeded;
diff --git a/src/libs/engine/events/DisconnectPortEvent.cpp b/src/libs/engine/events/DisconnectPortEvent.cpp
index 0956ca8f..75f44e9f 100644
--- a/src/libs/engine/events/DisconnectPortEvent.cpp
+++ b/src/libs/engine/events/DisconnectPortEvent.cpp
@@ -20,7 +20,7 @@
#include <raul/List.hpp>
#include <raul/Path.hpp>
#include <raul/Array.hpp>
-#include "interface/Responder.hpp"
+#include "Responder.hpp"
#include "Engine.hpp"
#include "Node.hpp"
#include "Connection.hpp"
@@ -39,7 +39,7 @@ using std::cerr; using std::endl;
namespace Ingen {
-DisconnectPortEvent::DisconnectPortEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& port_path)
+DisconnectPortEvent::DisconnectPortEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& port_path)
: QueuedEvent(engine, responder, timestamp),
_port_path(port_path),
_patch(NULL),
@@ -104,7 +104,7 @@ DisconnectPortEvent::pre_process()
for (Raul::List<Connection*>::const_iterator i = _patch->connections().begin(); i != _patch->connections().end(); ++i) {
c = (*i);
if ((c->src_port() == _port || c->dst_port() == _port) && !c->pending_disconnection()) {
- DisconnectionEvent* ev = new DisconnectionEvent(_engine, SharedPtr<Shared::Responder>(new Responder()), _time,
+ DisconnectionEvent* ev = new DisconnectionEvent(_engine, SharedPtr<Responder>(new Responder()), _time,
c->src_port(), c->dst_port());
ev->pre_process();
_disconnection_events.push_back(new Raul::ListNode<DisconnectionEvent*>(ev));
diff --git a/src/libs/engine/events/DisconnectPortEvent.hpp b/src/libs/engine/events/DisconnectPortEvent.hpp
index 95644098..2ce91b85 100644
--- a/src/libs/engine/events/DisconnectPortEvent.hpp
+++ b/src/libs/engine/events/DisconnectPortEvent.hpp
@@ -44,7 +44,7 @@ using std::string;
class DisconnectPortEvent : public QueuedEvent
{
public:
- DisconnectPortEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& port_path);
+ DisconnectPortEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& port_path);
DisconnectPortEvent(Engine& engine, Port* port);
~DisconnectPortEvent();
diff --git a/src/libs/engine/events/DisconnectionEvent.cpp b/src/libs/engine/events/DisconnectionEvent.cpp
index dc78a118..794399b3 100644
--- a/src/libs/engine/events/DisconnectionEvent.cpp
+++ b/src/libs/engine/events/DisconnectionEvent.cpp
@@ -19,7 +19,7 @@
#include <string>
#include <raul/Maid.hpp>
#include <raul/Path.hpp>
-#include "interface/Responder.hpp"
+#include "Responder.hpp"
#include "Engine.hpp"
#include "Connection.hpp"
#include "InputPort.hpp"
@@ -36,7 +36,7 @@ namespace Ingen {
//// DisconnectionEvent ////
-DisconnectionEvent::DisconnectionEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& src_port_path, const string& dst_port_path)
+DisconnectionEvent::DisconnectionEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& src_port_path, const string& dst_port_path)
: QueuedEvent(engine, responder, timestamp),
_src_port_path(src_port_path),
_dst_port_path(dst_port_path),
@@ -50,7 +50,7 @@ DisconnectionEvent::DisconnectionEvent(Engine& engine, SharedPtr<Shared::Respond
}
-DisconnectionEvent::DisconnectionEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, Port* const src_port, Port* const dst_port)
+DisconnectionEvent::DisconnectionEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, Port* const src_port, Port* const dst_port)
: QueuedEvent(engine, responder, timestamp),
_src_port_path(src_port->path()),
_dst_port_path(dst_port->path()),
diff --git a/src/libs/engine/events/DisconnectionEvent.hpp b/src/libs/engine/events/DisconnectionEvent.hpp
index 9c5b7490..5a30b7f1 100644
--- a/src/libs/engine/events/DisconnectionEvent.hpp
+++ b/src/libs/engine/events/DisconnectionEvent.hpp
@@ -48,8 +48,8 @@ class OutputPort;
class DisconnectionEvent : public QueuedEvent
{
public:
- DisconnectionEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& src_port_path, const string& dst_port_path);
- DisconnectionEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, Port* const src_port, Port* const dst_port);
+ DisconnectionEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& src_port_path, const string& dst_port_path);
+ DisconnectionEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, Port* const src_port, Port* const dst_port);
void pre_process();
void execute(SampleCount nframes, FrameTime start, FrameTime end);
@@ -67,8 +67,8 @@ private:
CONNECTION_NOT_FOUND
};
- Path _src_port_path;
- Path _dst_port_path;
+ Raul::Path _src_port_path;
+ Raul::Path _dst_port_path;
Patch* _patch;
Port* _src_port;
diff --git a/src/libs/engine/events/EnablePatchEvent.cpp b/src/libs/engine/events/EnablePatchEvent.cpp
index 1921b301..ed39ae04 100644
--- a/src/libs/engine/events/EnablePatchEvent.cpp
+++ b/src/libs/engine/events/EnablePatchEvent.cpp
@@ -16,7 +16,7 @@
*/
#include "EnablePatchEvent.hpp"
-#include "interface/Responder.hpp"
+#include "Responder.hpp"
#include "Engine.hpp"
#include "Patch.hpp"
#include "util.hpp"
@@ -26,7 +26,7 @@
namespace Ingen {
-EnablePatchEvent::EnablePatchEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& patch_path)
+EnablePatchEvent::EnablePatchEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& patch_path)
: QueuedEvent(engine, responder, timestamp),
_patch_path(patch_path),
_patch(NULL),
diff --git a/src/libs/engine/events/EnablePatchEvent.hpp b/src/libs/engine/events/EnablePatchEvent.hpp
index 0a74c082..d187594b 100644
--- a/src/libs/engine/events/EnablePatchEvent.hpp
+++ b/src/libs/engine/events/EnablePatchEvent.hpp
@@ -38,7 +38,7 @@ class Node;
class EnablePatchEvent : public QueuedEvent
{
public:
- EnablePatchEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& patch_path);
+ EnablePatchEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& patch_path);
void pre_process();
void execute(SampleCount nframes, FrameTime start, FrameTime end);
diff --git a/src/libs/engine/events/LoadPluginsEvent.cpp b/src/libs/engine/events/LoadPluginsEvent.cpp
index 04db153c..2eae055a 100644
--- a/src/libs/engine/events/LoadPluginsEvent.cpp
+++ b/src/libs/engine/events/LoadPluginsEvent.cpp
@@ -16,7 +16,7 @@
*/
#include "LoadPluginsEvent.hpp"
-#include "interface/Responder.hpp"
+#include "Responder.hpp"
#include "Engine.hpp"
#include "NodeFactory.hpp"
#include "ClientBroadcaster.hpp"
@@ -28,7 +28,7 @@ using std::cerr;
namespace Ingen {
-LoadPluginsEvent::LoadPluginsEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, QueuedEventSource* source)
+LoadPluginsEvent::LoadPluginsEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, QueuedEventSource* source)
: QueuedEvent(engine, responder, timestamp, true, source)
{
/* Not sure why this has to be blocking, but it fixes some nasty bugs.. */
diff --git a/src/libs/engine/events/LoadPluginsEvent.hpp b/src/libs/engine/events/LoadPluginsEvent.hpp
index c6f886f7..966e3275 100644
--- a/src/libs/engine/events/LoadPluginsEvent.hpp
+++ b/src/libs/engine/events/LoadPluginsEvent.hpp
@@ -34,7 +34,7 @@ class LoadPluginsEvent : public QueuedEvent
{
public:
LoadPluginsEvent(Engine& engine,
- SharedPtr<Shared::Responder> responder,
+ SharedPtr<Responder> responder,
SampleCount timestamp,
QueuedEventSource* source);
diff --git a/src/libs/engine/events/MidiLearnEvent.cpp b/src/libs/engine/events/MidiLearnEvent.cpp
index 8bc05b4f..441236fc 100644
--- a/src/libs/engine/events/MidiLearnEvent.cpp
+++ b/src/libs/engine/events/MidiLearnEvent.cpp
@@ -16,7 +16,7 @@
*/
#include "MidiLearnEvent.hpp"
-#include "interface/Responder.hpp"
+#include "Responder.hpp"
#include "Engine.hpp"
#include "ObjectStore.hpp"
#include "Node.hpp"
@@ -38,7 +38,7 @@ MidiLearnResponseEvent::post_process()
// MidiLearnEvent
-MidiLearnEvent::MidiLearnEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& node_path)
+MidiLearnEvent::MidiLearnEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& node_path)
: QueuedEvent(engine, responder, timestamp),
_node_path(node_path),
_node(NULL),
diff --git a/src/libs/engine/events/MidiLearnEvent.hpp b/src/libs/engine/events/MidiLearnEvent.hpp
index c5a0902f..bbb0c9a5 100644
--- a/src/libs/engine/events/MidiLearnEvent.hpp
+++ b/src/libs/engine/events/MidiLearnEvent.hpp
@@ -39,7 +39,7 @@ class MidiLearnResponseEvent : public Event
{
public:
MidiLearnResponseEvent(Engine& engine, const string& port_path, SampleCount timestamp)
- : Event(engine, SharedPtr<Shared::Responder>(), timestamp),
+ : Event(engine, SharedPtr<Responder>(), timestamp),
_port_path(port_path),
_value(0.0f)
{}
@@ -65,7 +65,7 @@ private:
class MidiLearnEvent : public QueuedEvent
{
public:
- MidiLearnEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& node_path);
+ MidiLearnEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& node_path);
void pre_process();
void execute(SampleCount nframes, FrameTime start, FrameTime end);
diff --git a/src/libs/engine/events/NoteOffEvent.cpp b/src/libs/engine/events/NoteOffEvent.cpp
index a8da7669..5768e265 100644
--- a/src/libs/engine/events/NoteOffEvent.cpp
+++ b/src/libs/engine/events/NoteOffEvent.cpp
@@ -16,7 +16,7 @@
*/
#include "NoteOffEvent.hpp"
-#include "interface/Responder.hpp"
+#include "Responder.hpp"
#include "Engine.hpp"
#include "ObjectStore.hpp"
#include "Node.hpp"
@@ -28,7 +28,7 @@ namespace Ingen {
/** Note off with patch explicitly passed - triggered by MIDI.
*/
-NoteOffEvent::NoteOffEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, Node* node, uchar note_num)
+NoteOffEvent::NoteOffEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, Node* node, uchar note_num)
: Event(engine, responder, timestamp),
_node(node),
_note_num(note_num)
@@ -38,7 +38,7 @@ NoteOffEvent::NoteOffEvent(Engine& engine, SharedPtr<Shared::Responder> responde
/** Note off event with lookup - triggered by OSC.
*/
-NoteOffEvent::NoteOffEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& node_path, uchar note_num)
+NoteOffEvent::NoteOffEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& node_path, uchar note_num)
: Event(engine, responder, timestamp),
_node(NULL),
_node_path(node_path),
diff --git a/src/libs/engine/events/NoteOffEvent.hpp b/src/libs/engine/events/NoteOffEvent.hpp
index 4186cbed..c9301f5b 100644
--- a/src/libs/engine/events/NoteOffEvent.hpp
+++ b/src/libs/engine/events/NoteOffEvent.hpp
@@ -35,8 +35,8 @@ class Node;
class NoteOffEvent : public Event
{
public:
- NoteOffEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, Node* node, uchar note_num);
- NoteOffEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& node_path, uchar note_num);
+ NoteOffEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, Node* node, uchar note_num);
+ NoteOffEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& node_path, uchar note_num);
void execute(SampleCount nframes, FrameTime start, FrameTime end);
void post_process();
diff --git a/src/libs/engine/events/NoteOnEvent.cpp b/src/libs/engine/events/NoteOnEvent.cpp
index 5bd57d93..22e85972 100644
--- a/src/libs/engine/events/NoteOnEvent.cpp
+++ b/src/libs/engine/events/NoteOnEvent.cpp
@@ -16,7 +16,7 @@
*/
#include "NoteOnEvent.hpp"
-#include "interface/Responder.hpp"
+#include "Responder.hpp"
#include "Engine.hpp"
#include "ObjectStore.hpp"
#include "Node.hpp"
@@ -31,7 +31,7 @@ namespace Ingen {
*
* Used to be triggered by MIDI. Not used anymore.
*/
-NoteOnEvent::NoteOnEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, Node* patch, uchar note_num, uchar velocity)
+NoteOnEvent::NoteOnEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, Node* patch, uchar note_num, uchar velocity)
: Event(engine, responder, timestamp),
_node(patch),
_note_num(note_num),
@@ -45,7 +45,7 @@ NoteOnEvent::NoteOnEvent(Engine& engine, SharedPtr<Shared::Responder> responder,
*
* Triggered by OSC.
*/
-NoteOnEvent::NoteOnEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& node_path, uchar note_num, uchar velocity)
+NoteOnEvent::NoteOnEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& node_path, uchar note_num, uchar velocity)
: Event(engine, responder, timestamp),
_node(NULL),
_node_path(node_path),
diff --git a/src/libs/engine/events/NoteOnEvent.hpp b/src/libs/engine/events/NoteOnEvent.hpp
index 3a641a55..175623bf 100644
--- a/src/libs/engine/events/NoteOnEvent.hpp
+++ b/src/libs/engine/events/NoteOnEvent.hpp
@@ -35,8 +35,8 @@ class Node;
class NoteOnEvent : public Event
{
public:
- NoteOnEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, Node* patch, uchar note_num, uchar velocity);
- NoteOnEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& node_path, uchar note_num, uchar velocity);
+ NoteOnEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, Node* patch, uchar note_num, uchar velocity);
+ NoteOnEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& node_path, uchar note_num, uchar velocity);
void execute(SampleCount nframes, FrameTime start, FrameTime end);
void post_process();
diff --git a/src/libs/engine/events/PingQueuedEvent.hpp b/src/libs/engine/events/PingQueuedEvent.hpp
index 9712a904..88c03aaa 100644
--- a/src/libs/engine/events/PingQueuedEvent.hpp
+++ b/src/libs/engine/events/PingQueuedEvent.hpp
@@ -20,7 +20,7 @@
#include "QueuedEvent.hpp"
#include "types.hpp"
-#include "interface/Responder.hpp"
+#include "Responder.hpp"
namespace Ingen {
@@ -35,7 +35,7 @@ class Port;
class PingQueuedEvent : public QueuedEvent
{
public:
- PingQueuedEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp)
+ PingQueuedEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp)
: QueuedEvent(engine, responder, timestamp)
{}
diff --git a/src/libs/engine/events/RegisterClientEvent.cpp b/src/libs/engine/events/RegisterClientEvent.cpp
index ac38d88c..a8f68e21 100644
--- a/src/libs/engine/events/RegisterClientEvent.cpp
+++ b/src/libs/engine/events/RegisterClientEvent.cpp
@@ -15,7 +15,7 @@
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#include "interface/Responder.hpp"
+#include "Responder.hpp"
#include "RegisterClientEvent.hpp"
#include "Engine.hpp"
#include "ClientBroadcaster.hpp"
@@ -24,7 +24,7 @@ namespace Ingen {
RegisterClientEvent::RegisterClientEvent(Engine& engine,
- SharedPtr<Shared::Responder> responder,
+ SharedPtr<Responder> responder,
SampleCount timestamp,
const string& uri,
ClientInterface* client)
diff --git a/src/libs/engine/events/RegisterClientEvent.hpp b/src/libs/engine/events/RegisterClientEvent.hpp
index a653a8bd..9e12b5ba 100644
--- a/src/libs/engine/events/RegisterClientEvent.hpp
+++ b/src/libs/engine/events/RegisterClientEvent.hpp
@@ -23,7 +23,7 @@
#include <string>
using std::string;
using Ingen::Shared::ClientInterface;
-using Ingen::Shared::Responder;
+using Ingen::Responder;
namespace Ingen {
@@ -36,7 +36,7 @@ class RegisterClientEvent : public QueuedEvent
{
public:
RegisterClientEvent(Engine& engine,
- SharedPtr<Shared::Responder> responder,
+ SharedPtr<Responder> responder,
SampleCount timestamp,
const string& uri,
ClientInterface* client);
diff --git a/src/libs/engine/events/RenameEvent.cpp b/src/libs/engine/events/RenameEvent.cpp
index a7dc4874..a731314b 100644
--- a/src/libs/engine/events/RenameEvent.cpp
+++ b/src/libs/engine/events/RenameEvent.cpp
@@ -16,7 +16,7 @@
*/
#include "RenameEvent.hpp"
-#include "interface/Responder.hpp"
+#include "Responder.hpp"
#include "Patch.hpp"
#include "Node.hpp"
#include "Tree.hpp"
@@ -30,7 +30,7 @@ using namespace std;
namespace Ingen {
-RenameEvent::RenameEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& path, const string& name)
+RenameEvent::RenameEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& path, const string& name)
: QueuedEvent(engine, responder, timestamp),
_old_path(path),
_name(name),
diff --git a/src/libs/engine/events/RenameEvent.hpp b/src/libs/engine/events/RenameEvent.hpp
index 52a3050e..da7d642a 100644
--- a/src/libs/engine/events/RenameEvent.hpp
+++ b/src/libs/engine/events/RenameEvent.hpp
@@ -45,7 +45,7 @@ class DisconnectPortEvent;
class RenameEvent : public QueuedEvent
{
public:
- RenameEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& path, const string& name);
+ RenameEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& path, const string& name);
~RenameEvent();
void pre_process();
diff --git a/src/libs/engine/events/RequestAllObjectsEvent.cpp b/src/libs/engine/events/RequestAllObjectsEvent.cpp
index d82b6779..e4d0f083 100644
--- a/src/libs/engine/events/RequestAllObjectsEvent.cpp
+++ b/src/libs/engine/events/RequestAllObjectsEvent.cpp
@@ -16,7 +16,7 @@
*/
#include "RequestAllObjectsEvent.hpp"
-#include "interface/Responder.hpp"
+#include "Responder.hpp"
#include "Engine.hpp"
#include "ObjectSender.hpp"
#include "ClientBroadcaster.hpp"
@@ -25,7 +25,7 @@
namespace Ingen {
-RequestAllObjectsEvent::RequestAllObjectsEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp)
+RequestAllObjectsEvent::RequestAllObjectsEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp)
: QueuedEvent(engine, responder, timestamp)
{
}
@@ -34,8 +34,6 @@ RequestAllObjectsEvent::RequestAllObjectsEvent(Engine& engine, SharedPtr<Shared:
void
RequestAllObjectsEvent::pre_process()
{
- _client = _engine.broadcaster()->client(_responder->client_uri());
-
QueuedEvent::pre_process();
}
@@ -43,13 +41,13 @@ RequestAllObjectsEvent::pre_process()
void
RequestAllObjectsEvent::post_process()
{
- if (_client) {
+ if (_responder->client()) {
_responder->respond_ok();
// Everything is a child of the root patch, so this sends it all
Patch* root = _engine.object_store()->find_patch("/");
- if (root)
- ObjectSender::send_patch(_client, root, true);
+ if (root && _responder->client())
+ ObjectSender::send_patch(_responder->client(), root, true);
} else {
_responder->respond_error("Unable to find client to send all objects");
diff --git a/src/libs/engine/events/RequestAllObjectsEvent.hpp b/src/libs/engine/events/RequestAllObjectsEvent.hpp
index 016e35c7..0537575a 100644
--- a/src/libs/engine/events/RequestAllObjectsEvent.hpp
+++ b/src/libs/engine/events/RequestAllObjectsEvent.hpp
@@ -36,13 +36,10 @@ namespace Shared {
class RequestAllObjectsEvent : public QueuedEvent
{
public:
- RequestAllObjectsEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp);
+ RequestAllObjectsEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp);
void pre_process();
void post_process();
-
-private:
- ClientInterface* _client;
};
diff --git a/src/libs/engine/events/RequestMetadataEvent.cpp b/src/libs/engine/events/RequestMetadataEvent.cpp
index fa0ecafb..fdd0ded3 100644
--- a/src/libs/engine/events/RequestMetadataEvent.cpp
+++ b/src/libs/engine/events/RequestMetadataEvent.cpp
@@ -17,7 +17,7 @@
#include "RequestMetadataEvent.hpp"
#include <string>
-#include "interface/Responder.hpp"
+#include "Responder.hpp"
#include "Engine.hpp"
#include "GraphObject.hpp"
#include "ObjectStore.hpp"
@@ -28,12 +28,11 @@ using std::string;
namespace Ingen {
-RequestMetadataEvent::RequestMetadataEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& node_path, const string& key)
+RequestMetadataEvent::RequestMetadataEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& node_path, const string& key)
: QueuedEvent(engine, responder, timestamp),
_path(node_path),
_key(key),
- _object(NULL),
- _client(NULL)
+ _object(NULL)
{
}
@@ -41,9 +40,7 @@ RequestMetadataEvent::RequestMetadataEvent(Engine& engine, SharedPtr<Shared::Res
void
RequestMetadataEvent::pre_process()
{
- _client = _engine.broadcaster()->client(_responder->client_uri());
-
- if (_client) {
+ if (_responder->client()) {
_object = _engine.object_store()->find_object(_path);
if (_object == NULL) {
QueuedEvent::pre_process();
@@ -60,14 +57,14 @@ RequestMetadataEvent::pre_process()
void
RequestMetadataEvent::post_process()
{
- if (_client) {
+ if (_responder->client()) {
if (!_object) {
string msg = "Unable to find metadata subject ";
msg += _path;
_responder->respond_error(msg);
} else {
_responder->respond_ok();
- _client->metadata_update(_path, _key, _value);
+ _responder->client()->metadata_update(_path, _key, _value);
}
} else {
_responder->respond_error("Unknown client");
diff --git a/src/libs/engine/events/RequestMetadataEvent.hpp b/src/libs/engine/events/RequestMetadataEvent.hpp
index db41fd32..714b1ec3 100644
--- a/src/libs/engine/events/RequestMetadataEvent.hpp
+++ b/src/libs/engine/events/RequestMetadataEvent.hpp
@@ -38,7 +38,7 @@ namespace Shared {
class RequestMetadataEvent : public QueuedEvent
{
public:
- RequestMetadataEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& path, const string& key);
+ RequestMetadataEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& path, const string& key);
void pre_process();
void post_process();
@@ -48,7 +48,6 @@ private:
string _key;
Raul::Atom _value;
GraphObject* _object;
- ClientInterface* _client;
};
diff --git a/src/libs/engine/events/RequestObjectEvent.cpp b/src/libs/engine/events/RequestObjectEvent.cpp
index f8343df0..62651e63 100644
--- a/src/libs/engine/events/RequestObjectEvent.cpp
+++ b/src/libs/engine/events/RequestObjectEvent.cpp
@@ -18,7 +18,7 @@
#include "RequestObjectEvent.hpp"
#include <string>
#include "interface/ClientInterface.hpp"
-#include "interface/Responder.hpp"
+#include "Responder.hpp"
#include "Engine.hpp"
#include "ObjectStore.hpp"
#include "ClientBroadcaster.hpp"
@@ -32,7 +32,7 @@ using std::string;
namespace Ingen {
-RequestObjectEvent::RequestObjectEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& path)
+RequestObjectEvent::RequestObjectEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& path)
: QueuedEvent(engine, responder, timestamp),
_path(path),
_object(NULL)
@@ -43,7 +43,6 @@ RequestObjectEvent::RequestObjectEvent(Engine& engine, SharedPtr<Shared::Respond
void
RequestObjectEvent::pre_process()
{
- _client = _engine.broadcaster()->client(_responder->client_uri());
_object = _engine.object_store()->find_object(_path);
QueuedEvent::pre_process();
@@ -64,25 +63,25 @@ RequestObjectEvent::post_process()
if (!_object) {
_responder->respond_error("Unable to find object requested.");
- } else if (_client) {
+ } else if (_responder->client()) {
Patch* const patch = dynamic_cast<Patch*>(_object);
if (patch) {
_responder->respond_ok();
- ObjectSender::send_patch(_client, patch, true);
+ ObjectSender::send_patch(_responder->client(), patch, true);
return;
}
Node* const node = dynamic_cast<Node*>(_object);
if (node) {
_responder->respond_ok();
- ObjectSender::send_node(_client, node, true);
+ ObjectSender::send_node(_responder->client(), node, true);
return;
}
Port* const port = dynamic_cast<Port*>(_object);
if (port) {
_responder->respond_ok();
- ObjectSender::send_port(_client, port);
+ ObjectSender::send_port(_responder->client(), port);
return;
}
diff --git a/src/libs/engine/events/RequestObjectEvent.hpp b/src/libs/engine/events/RequestObjectEvent.hpp
index 58f7d73e..1997cabe 100644
--- a/src/libs/engine/events/RequestObjectEvent.hpp
+++ b/src/libs/engine/events/RequestObjectEvent.hpp
@@ -38,16 +38,15 @@ using Shared::ClientInterface;
class RequestObjectEvent : public QueuedEvent
{
public:
- RequestObjectEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& port_path);
+ RequestObjectEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& port_path);
void pre_process();
void execute(SampleCount nframes, FrameTime start, FrameTime end);
void post_process();
private:
- string _path;
- GraphObject* _object;
- ClientInterface* _client;
+ string _path;
+ GraphObject* _object;
};
diff --git a/src/libs/engine/events/RequestPluginEvent.cpp b/src/libs/engine/events/RequestPluginEvent.cpp
index 981c98e7..693a021a 100644
--- a/src/libs/engine/events/RequestPluginEvent.cpp
+++ b/src/libs/engine/events/RequestPluginEvent.cpp
@@ -18,7 +18,7 @@
#include "RequestPluginEvent.hpp"
#include <string>
#include "interface/ClientInterface.hpp"
-#include "interface/Responder.hpp"
+#include "Responder.hpp"
#include "Engine.hpp"
#include "Port.hpp"
#include "ObjectStore.hpp"
@@ -31,7 +31,7 @@ using std::string;
namespace Ingen {
-RequestPluginEvent::RequestPluginEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& uri)
+RequestPluginEvent::RequestPluginEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& uri)
: QueuedEvent(engine, responder, timestamp),
_uri(uri),
_plugin(NULL)
@@ -42,7 +42,6 @@ RequestPluginEvent::RequestPluginEvent(Engine& engine, SharedPtr<Shared::Respond
void
RequestPluginEvent::pre_process()
{
- _client = _engine.broadcaster()->client(_responder->client_uri());
_plugin = _engine.node_factory()->plugin(_uri);
QueuedEvent::pre_process();
@@ -63,11 +62,11 @@ RequestPluginEvent::post_process()
if (!_plugin) {
_responder->respond_error("Unable to find plugin requested.");
- } else if (_client) {
+ } else if (_responder->client()) {
_responder->respond_ok();
assert(_plugin->uri() == _uri);
- _client->new_plugin(_uri, _plugin->type_uri(), _plugin->name());
+ _responder->client()->new_plugin(_uri, _plugin->type_uri(), _plugin->name());
} else {
_responder->respond_error("Unable to find client to send plugin.");
diff --git a/src/libs/engine/events/RequestPluginEvent.hpp b/src/libs/engine/events/RequestPluginEvent.hpp
index 8c927ed5..978aa5ff 100644
--- a/src/libs/engine/events/RequestPluginEvent.hpp
+++ b/src/libs/engine/events/RequestPluginEvent.hpp
@@ -38,16 +38,15 @@ using Shared::ClientInterface;
class RequestPluginEvent : public QueuedEvent
{
public:
- RequestPluginEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& uri);
+ RequestPluginEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& uri);
void pre_process();
void execute(SampleCount nframes, FrameTime start, FrameTime end);
void post_process();
private:
- string _uri;
- const Plugin* _plugin;
- ClientInterface* _client;
+ string _uri;
+ const Plugin* _plugin;
};
diff --git a/src/libs/engine/events/RequestPluginsEvent.cpp b/src/libs/engine/events/RequestPluginsEvent.cpp
index 50271b7f..005048ea 100644
--- a/src/libs/engine/events/RequestPluginsEvent.cpp
+++ b/src/libs/engine/events/RequestPluginsEvent.cpp
@@ -16,7 +16,7 @@
*/
#include "RequestPluginsEvent.hpp"
-#include "interface/Responder.hpp"
+#include "Responder.hpp"
#include "Engine.hpp"
#include "ClientBroadcaster.hpp"
#include "NodeFactory.hpp"
@@ -24,7 +24,7 @@
namespace Ingen {
-RequestPluginsEvent::RequestPluginsEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp)
+RequestPluginsEvent::RequestPluginsEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp)
: QueuedEvent(engine, responder, timestamp)
{
}
@@ -33,8 +33,6 @@ RequestPluginsEvent::RequestPluginsEvent(Engine& engine, SharedPtr<Shared::Respo
void
RequestPluginsEvent::pre_process()
{
- _client = _engine.broadcaster()->client(_responder->client_uri());
-
// Take a copy to send in the post processing thread (to avoid problems
// because std::list isn't thread safe)
_plugins = _engine.node_factory()->plugins();
@@ -46,8 +44,8 @@ RequestPluginsEvent::pre_process()
void
RequestPluginsEvent::post_process()
{
- if (_client) {
- _engine.broadcaster()->send_plugins_to(_client, _plugins);
+ if (_responder->client()) {
+ _engine.broadcaster()->send_plugins_to(_responder->client(), _plugins);
_responder->respond_ok();
} else {
_responder->respond_error("Unable to find client to send plugins");
diff --git a/src/libs/engine/events/RequestPluginsEvent.hpp b/src/libs/engine/events/RequestPluginsEvent.hpp
index 489478e4..92a042f9 100644
--- a/src/libs/engine/events/RequestPluginsEvent.hpp
+++ b/src/libs/engine/events/RequestPluginsEvent.hpp
@@ -26,7 +26,7 @@ using std::string;
namespace Ingen {
class Plugin;
-class Shared::Responder;
+class Responder;
namespace Shared {
class ClientInterface;
} using Shared::ClientInterface;
@@ -39,13 +39,12 @@ namespace Shared {
class RequestPluginsEvent : public QueuedEvent
{
public:
- RequestPluginsEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp);
+ RequestPluginsEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp);
void pre_process();
void post_process();
private:
- ClientInterface* _client;
std::list<Plugin*> _plugins;
};
diff --git a/src/libs/engine/events/RequestPortValueEvent.cpp b/src/libs/engine/events/RequestPortValueEvent.cpp
index 113369b3..992c1615 100644
--- a/src/libs/engine/events/RequestPortValueEvent.cpp
+++ b/src/libs/engine/events/RequestPortValueEvent.cpp
@@ -18,7 +18,7 @@
#include "RequestPortValueEvent.hpp"
#include <string>
#include "interface/ClientInterface.hpp"
-#include "interface/Responder.hpp"
+#include "Responder.hpp"
#include "Engine.hpp"
#include "Port.hpp"
#include "ObjectStore.hpp"
@@ -30,7 +30,7 @@ using std::string;
namespace Ingen {
-RequestPortValueEvent::RequestPortValueEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& port_path)
+RequestPortValueEvent::RequestPortValueEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& port_path)
: QueuedEvent(engine, responder, timestamp),
_port_path(port_path),
_port(NULL),
@@ -42,7 +42,6 @@ RequestPortValueEvent::RequestPortValueEvent(Engine& engine, SharedPtr<Shared::R
void
RequestPortValueEvent::pre_process()
{
- _client = _engine.broadcaster()->client(_responder->client_uri());
_port = _engine.object_store()->find_port(_port_path);
QueuedEvent::pre_process();
@@ -68,9 +67,9 @@ RequestPortValueEvent::post_process()
string msg;
if (!_port) {
_responder->respond_error("Unable to find port for get_value responder.");
- } else if (_client) {
+ } else if (_responder->client()) {
_responder->respond_ok();
- _client->control_change(_port_path, _value);
+ _responder->client()->control_change(_port_path, _value);
} else {
_responder->respond_error("Unable to find client to send port value");
}
diff --git a/src/libs/engine/events/RequestPortValueEvent.hpp b/src/libs/engine/events/RequestPortValueEvent.hpp
index da843947..f7170153 100644
--- a/src/libs/engine/events/RequestPortValueEvent.hpp
+++ b/src/libs/engine/events/RequestPortValueEvent.hpp
@@ -38,17 +38,16 @@ using Shared::ClientInterface;
class RequestPortValueEvent : public QueuedEvent
{
public:
- RequestPortValueEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& port_path);
+ RequestPortValueEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& port_path);
void pre_process();
void execute(SampleCount nframes, FrameTime start, FrameTime end);
void post_process();
private:
- string _port_path;
- Port* _port;
- Sample _value;
- ClientInterface* _client;
+ string _port_path;
+ Port* _port;
+ Sample _value;
};
diff --git a/src/libs/engine/events/SetMetadataEvent.cpp b/src/libs/engine/events/SetMetadataEvent.cpp
index 4a93bed6..8e848aa6 100644
--- a/src/libs/engine/events/SetMetadataEvent.cpp
+++ b/src/libs/engine/events/SetMetadataEvent.cpp
@@ -17,7 +17,7 @@
#include "SetMetadataEvent.hpp"
#include <string>
-#include "interface/Responder.hpp"
+#include "Responder.hpp"
#include "Engine.hpp"
#include "ClientBroadcaster.hpp"
#include "GraphObject.hpp"
@@ -28,7 +28,7 @@ using std::string;
namespace Ingen {
-SetMetadataEvent::SetMetadataEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& path, const string& key, const Atom& value)
+SetMetadataEvent::SetMetadataEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& path, const string& key, const Atom& value)
: QueuedEvent(engine, responder, timestamp),
_path(path),
_key(key),
diff --git a/src/libs/engine/events/SetMetadataEvent.hpp b/src/libs/engine/events/SetMetadataEvent.hpp
index c5476eed..51af36f7 100644
--- a/src/libs/engine/events/SetMetadataEvent.hpp
+++ b/src/libs/engine/events/SetMetadataEvent.hpp
@@ -36,7 +36,7 @@ class GraphObject;
class SetMetadataEvent : public QueuedEvent
{
public:
- SetMetadataEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& path, const string& key, const Raul::Atom& value);
+ SetMetadataEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& path, const string& key, const Raul::Atom& value);
void pre_process();
void execute(SampleCount nframes, FrameTime start, FrameTime end);
diff --git a/src/libs/engine/events/SetPortValueEvent.cpp b/src/libs/engine/events/SetPortValueEvent.cpp
index d4de64b3..581defa6 100644
--- a/src/libs/engine/events/SetPortValueEvent.cpp
+++ b/src/libs/engine/events/SetPortValueEvent.cpp
@@ -15,7 +15,7 @@
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#include "interface/Responder.hpp"
+#include "Responder.hpp"
#include "SetPortValueEvent.hpp"
#include "Engine.hpp"
#include "Port.hpp"
@@ -29,7 +29,7 @@ namespace Ingen {
/** Voice-specific control setting
*/
-SetPortValueEvent::SetPortValueEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, size_t voice_num, const string& port_path, Sample val)
+SetPortValueEvent::SetPortValueEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, size_t voice_num, const string& port_path, Sample val)
: Event(engine, responder, timestamp),
_voice_num(voice_num),
_port_path(port_path),
@@ -40,7 +40,7 @@ SetPortValueEvent::SetPortValueEvent(Engine& engine, SharedPtr<Shared::Responder
}
-SetPortValueEvent::SetPortValueEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& port_path, Sample val)
+SetPortValueEvent::SetPortValueEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& port_path, Sample val)
: Event(engine, responder, timestamp),
_voice_num(-1),
_port_path(port_path),
diff --git a/src/libs/engine/events/SetPortValueEvent.hpp b/src/libs/engine/events/SetPortValueEvent.hpp
index 2f2f35e7..da378347 100644
--- a/src/libs/engine/events/SetPortValueEvent.hpp
+++ b/src/libs/engine/events/SetPortValueEvent.hpp
@@ -35,8 +35,8 @@ class Port;
class SetPortValueEvent : public Event
{
public:
- SetPortValueEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& port_path, Sample val);
- SetPortValueEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, size_t voice_num, const string& port_path, Sample val);
+ SetPortValueEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& port_path, Sample val);
+ SetPortValueEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, size_t voice_num, const string& port_path, Sample val);
void execute(SampleCount nframes, FrameTime start, FrameTime end);
void post_process();
diff --git a/src/libs/engine/events/SetPortValueQueuedEvent.cpp b/src/libs/engine/events/SetPortValueQueuedEvent.cpp
index a1a93a08..35c2f270 100644
--- a/src/libs/engine/events/SetPortValueQueuedEvent.cpp
+++ b/src/libs/engine/events/SetPortValueQueuedEvent.cpp
@@ -16,7 +16,7 @@
*/
#include "SetPortValueQueuedEvent.hpp"
-#include "interface/Responder.hpp"
+#include "Responder.hpp"
#include "Engine.hpp"
#include "Port.hpp"
#include "ClientBroadcaster.hpp"
@@ -30,7 +30,7 @@ namespace Ingen {
/** Voice-specific control setting
*/
-SetPortValueQueuedEvent::SetPortValueQueuedEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, size_t voice_num, const string& port_path, Sample val)
+SetPortValueQueuedEvent::SetPortValueQueuedEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, size_t voice_num, const string& port_path, Sample val)
: QueuedEvent(engine, responder, timestamp),
_voice_num(voice_num),
_port_path(port_path),
@@ -41,7 +41,7 @@ SetPortValueQueuedEvent::SetPortValueQueuedEvent(Engine& engine, SharedPtr<Share
}
-SetPortValueQueuedEvent::SetPortValueQueuedEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& port_path, Sample val)
+SetPortValueQueuedEvent::SetPortValueQueuedEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& port_path, Sample val)
: QueuedEvent(engine, responder, timestamp),
_voice_num(-1),
_port_path(port_path),
diff --git a/src/libs/engine/events/SetPortValueQueuedEvent.hpp b/src/libs/engine/events/SetPortValueQueuedEvent.hpp
index a0e01910..43e3d0f8 100644
--- a/src/libs/engine/events/SetPortValueQueuedEvent.hpp
+++ b/src/libs/engine/events/SetPortValueQueuedEvent.hpp
@@ -35,8 +35,8 @@ class Port;
class SetPortValueQueuedEvent : public QueuedEvent
{
public:
- SetPortValueQueuedEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& port_path, Sample val);
- SetPortValueQueuedEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, size_t voice_num, const string& port_path, Sample val);
+ SetPortValueQueuedEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& port_path, Sample val);
+ SetPortValueQueuedEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, size_t voice_num, const string& port_path, Sample val);
void pre_process();
void execute(SampleCount nframes, FrameTime start, FrameTime end);
diff --git a/src/libs/engine/events/UnregisterClientEvent.cpp b/src/libs/engine/events/UnregisterClientEvent.cpp
index 11424003..72ab8048 100644
--- a/src/libs/engine/events/UnregisterClientEvent.cpp
+++ b/src/libs/engine/events/UnregisterClientEvent.cpp
@@ -16,7 +16,7 @@
*/
#include "interface/ClientInterface.hpp"
-#include "interface/Responder.hpp"
+#include "Responder.hpp"
#include "UnregisterClientEvent.hpp"
#include "Engine.hpp"
#include "ClientBroadcaster.hpp"
@@ -24,7 +24,7 @@
namespace Ingen {
-UnregisterClientEvent::UnregisterClientEvent(Engine& engine, SharedPtr<Shared::Responder> responder, SampleCount timestamp, const string& uri)
+UnregisterClientEvent::UnregisterClientEvent(Engine& engine, SharedPtr<Responder> responder, SampleCount timestamp, const string& uri)
: QueuedEvent(engine, responder, timestamp)
, _uri(uri)
{
diff --git a/src/libs/engine/events/UnregisterClientEvent.hpp b/src/libs/engine/events/UnregisterClientEvent.hpp
index 500c1250..c21bc5da 100644
--- a/src/libs/engine/events/UnregisterClientEvent.hpp
+++ b/src/libs/engine/events/UnregisterClientEvent.hpp
@@ -38,7 +38,7 @@ class UnregisterClientEvent : public QueuedEvent
{
public:
UnregisterClientEvent(Engine& engine,
- SharedPtr<Shared::Responder> responder,
+ SharedPtr<Responder> responder,
SampleCount timestamp,
const string& uri);
diff --git a/src/libs/gui/App.cpp b/src/libs/gui/App.cpp
index add26d8c..c2d835f3 100644
--- a/src/libs/gui/App.cpp
+++ b/src/libs/gui/App.cpp
@@ -138,6 +138,8 @@ App::attach(const SharedPtr<EngineInterface>& engine, const SharedPtr<SigClientI
assert( ! _client);
assert( ! _store);
assert( ! _loader);
+
+ engine->register_client(client.get());
_engine = engine;
_client = client;
diff --git a/src/libs/gui/ConnectWindow.cpp b/src/libs/gui/ConnectWindow.cpp
index f5a3fdea..2b986b37 100644
--- a/src/libs/gui/ConnectWindow.cpp
+++ b/src/libs/gui/ConnectWindow.cpp
@@ -26,7 +26,6 @@
#include "interface/EngineInterface.hpp"
#include "engine/tuning.hpp"
#include "engine/Engine.hpp"
-#include "engine/DirectResponder.hpp"
#include "engine/QueuedEngineInterface.hpp"
#include "client/OSCClientReceiver.hpp"
#include "client/OSCEngineSender.hpp"
@@ -118,12 +117,10 @@ ConnectWindow::start(SharedPtr<Ingen::Engine> engine, SharedPtr<Shared::EngineIn
ThreadedSigClientInterface* tsci = new ThreadedSigClientInterface(Ingen::event_queue_size);
SharedPtr<SigClientInterface> client(tsci);
- if (interface) {
- App::instance().attach(interface, client);
- interface->set_responder(SharedPtr<Ingen::Shared::Responder>(new Ingen::DirectResponder(tsci, 1)));
- }
-
engine->activate();
+
+ if (interface)
+ App::instance().attach(interface, client);
_connect_stage = 0;
@@ -254,9 +251,6 @@ ConnectWindow::connect()
App::instance().attach(engine_interface, client);
- engine_interface->set_responder(SharedPtr<Ingen::Shared::Responder>(
- new Ingen::DirectResponder(tsci, 1)));
-
_engine->activate();
Glib::signal_timeout().connect(
@@ -357,8 +351,9 @@ ConnectWindow::gtk_callback()
_progress_label->set_text("Connecting to engine...");
present();
- App::instance().client()->response_sig.connect(sigc::mem_fun(this, &ConnectWindow::response_received));
-
+ App::instance().client()->response_ok_sig.connect(
+ sigc::mem_fun(this, &ConnectWindow::response_ok_received));
+
_ping_id = rand();
while (_ping_id == -1)
_ping_id = rand();
@@ -387,7 +382,7 @@ ConnectWindow::gtk_callback()
// FIXME
//auto_ptr<ClientInterface> client(new ThreadedSigClientInterface();
// FIXME: client URI
- App::instance().engine()->register_client("", App::instance().client().get());
+ App::instance().engine()->register_client(App::instance().client().get());
App::instance().engine()->load_plugins();
++_connect_stage;
} else if (_connect_stage == 3) {
diff --git a/src/libs/gui/ConnectWindow.hpp b/src/libs/gui/ConnectWindow.hpp
index f8cd8db8..086da446 100644
--- a/src/libs/gui/ConnectWindow.hpp
+++ b/src/libs/gui/ConnectWindow.hpp
@@ -54,7 +54,7 @@ public:
void set_connected_to(SharedPtr<Shared::EngineInterface> e=SharedPtr<Shared::EngineInterface>());
void start(SharedPtr<Ingen::Engine> engine, SharedPtr<Shared::EngineInterface> interface);
- void response_received(int32_t id, bool, string) { if ((id) == _ping_id) _attached = true; }
+ void response_ok_received(int32_t id) { if ((id) == _ping_id) _attached = true; }
private:
enum Mode { CONNECT_REMOTE, LAUNCH_REMOTE, INTERNAL };