summaryrefslogtreecommitdiffstats
path: root/src/server/events/Get.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2012-07-26 15:27:03 +0000
committerDavid Robillard <d@drobilla.net>2012-07-26 15:27:03 +0000
commit3c5931bb13b5f88edcebb375fa6964dde8b85563 (patch)
tree9801897576b7fb9d8a9f700847c670f216fc93b7 /src/server/events/Get.cpp
parentb83ed4f83cf4c9b5054dcf55bea710313c369633 (diff)
downloadingen-3c5931bb13b5f88edcebb375fa6964dde8b85563.tar.gz
ingen-3c5931bb13b5f88edcebb375fa6964dde8b85563.tar.bz2
ingen-3c5931bb13b5f88edcebb375fa6964dde8b85563.zip
Report subject with errors to client for more meaningful error messages.
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4556 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/server/events/Get.cpp')
-rw-r--r--src/server/events/Get.cpp29
1 files changed, 10 insertions, 19 deletions
diff --git a/src/server/events/Get.cpp b/src/server/events/Get.cpp
index 24f3d1d9..cc64aaef 100644
--- a/src/server/events/Get.cpp
+++ b/src/server/events/Get.cpp
@@ -56,12 +56,14 @@ Get::pre_process()
if (_uri == "ingen:plugins") {
_plugins = _engine.node_factory()->plugins();
return Event::pre_process_done(SUCCESS);
+ } else if (_uri == "ingen:engine") {
+ return Event::pre_process_done(SUCCESS);
} else if (Raul::Path::is_valid(_uri.str())) {
_object = _engine.engine_store()->find_object(Raul::Path(_uri.str()));
- return Event::pre_process_done(_object ? SUCCESS : NOT_FOUND);
+ return Event::pre_process_done(_object ? SUCCESS : NOT_FOUND, _uri);
} else {
_plugin = _engine.node_factory()->plugin(_uri);
- return Event::pre_process_done(_plugin ? SUCCESS : NOT_FOUND);
+ return Event::pre_process_done(_plugin ? SUCCESS : NOT_FOUND, _uri);
}
}
@@ -127,28 +129,17 @@ send_patch(Interface* client, const PatchImpl* patch)
void
Get::post_process()
{
- if (_uri == "ingen:plugins") {
- respond(SUCCESS);
- if (_request_client) {
+ if (!respond() && _request_client) {
+ if (_uri == "ingen:plugins") {
_engine.broadcaster()->send_plugins_to(_request_client.get(), _plugins);
- }
- } else if (_uri == "ingen:engine") {
- respond(SUCCESS);
- // TODO: Keep a proper RDF model of the engine
- if (_request_client) {
+ } else if (_uri == "ingen:engine") {
+ // TODO: Keep a proper RDF model of the engine
Shared::URIs& uris = _engine.world()->uris();
_request_client->set_property(
uris.ingen_engine,
uris.ingen_sampleRate,
uris.forge.make(int32_t(_engine.driver()->sample_rate())));
- }
- } else if (!_object && !_plugin) {
- respond(NOT_FOUND);
- } else if (!_request_client) {
- respond(CLIENT_NOT_FOUND);
- } else {
- respond(SUCCESS);
- if (_object) {
+ } else if (_object) {
_request_client->bundle_begin();
const NodeImpl* node = NULL;
const PatchImpl* patch = NULL;
@@ -164,8 +155,8 @@ Get::post_process()
} else if (_plugin) {
_request_client->put(_uri, _plugin->properties());
}
- _lock.release();
}
+ _lock.release();
}
} // namespace Events