summaryrefslogtreecommitdiffstats
path: root/src/libs/engine/QueuedEngineInterface.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2007-08-01 14:10:46 +0000
committerDavid Robillard <d@drobilla.net>2007-08-01 14:10:46 +0000
commit188e34375827915a9832ddb1db4b94494bbee455 (patch)
tree2acbb717536af9a82949dcaa324360ed14bf5302 /src/libs/engine/QueuedEngineInterface.cpp
parent1a77934531b0ddfc4392ccffbdde0058c2dbab68 (diff)
downloadingen-188e34375827915a9832ddb1db4b94494bbee455.tar.gz
ingen-188e34375827915a9832ddb1db4b94494bbee455.tar.bz2
ingen-188e34375827915a9832ddb1db4b94494bbee455.zip
Clean up engine/client interfaces.
Hide Response, now an internal engine implementation detail (and not a problem for script bindings anymore). git-svn-id: http://svn.drobilla.net/lad/ingen@666 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/libs/engine/QueuedEngineInterface.cpp')
-rw-r--r--src/libs/engine/QueuedEngineInterface.cpp33
1 files changed, 15 insertions, 18 deletions
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);
+ }
}