summaryrefslogtreecommitdiffstats
path: root/src/server/events/SetMetadata.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2011-10-21 23:11:27 +0000
committerDavid Robillard <d@drobilla.net>2011-10-21 23:11:27 +0000
commitd7bc67f9752a90abf165c875839294befb42ef90 (patch)
tree1b8bddf242f95592d2ed563cc14a49b511580870 /src/server/events/SetMetadata.cpp
parent221b1bfaec0ba4a9b1067fd16e2fb100e60a93ba (diff)
downloadingen-d7bc67f9752a90abf165c875839294befb42ef90.tar.gz
ingen-d7bc67f9752a90abf165c875839294befb42ef90.tar.bz2
ingen-d7bc67f9752a90abf165c875839294befb42ef90.zip
Merge Request into Event.
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@3574 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/server/events/SetMetadata.cpp')
-rw-r--r--src/server/events/SetMetadata.cpp49
1 files changed, 23 insertions, 26 deletions
diff --git a/src/server/events/SetMetadata.cpp b/src/server/events/SetMetadata.cpp
index 4133803b..4d6f6497 100644
--- a/src/server/events/SetMetadata.cpp
+++ b/src/server/events/SetMetadata.cpp
@@ -35,7 +35,6 @@
#include "PluginImpl.hpp"
#include "PortImpl.hpp"
#include "PortType.hpp"
-#include "Request.hpp"
#include "SetMetadata.hpp"
#include "SetPortValue.hpp"
#include "ingen/shared/LV2URIMap.hpp"
@@ -51,16 +50,16 @@ namespace Events {
typedef Resource::Properties Properties;
-SetMetadata::SetMetadata(
- Engine& engine,
- SharedPtr<Request> request,
- SampleCount timestamp,
- bool create,
- Resource::Graph context,
- const URI& subject,
- const Properties& properties,
- const Properties& remove)
- : Event(engine, request, timestamp)
+SetMetadata::SetMetadata(Engine& engine,
+ ClientInterface* client,
+ int32_t id,
+ SampleCount timestamp,
+ bool create,
+ Resource::Graph context,
+ const URI& subject,
+ const Properties& properties,
+ const Properties& remove)
+ : Event(engine, client, id, timestamp)
, _create_event(NULL)
, _subject(subject)
, _properties(properties)
@@ -125,23 +124,20 @@ SetMetadata::pre_process()
bool is_patch = false, is_node = false, is_port = false, is_output = false;
Shared::ResourceImpl::type(uris, _properties, is_patch, is_node, is_port, is_output);
- // Create a separate request without a source so EventSource isn't unblocked twice
- SharedPtr<Request> sub_request(new Request(_request->client(), _request->id()));
-
if (is_patch) {
uint32_t poly = 1;
iterator p = _properties.find(uris.ingen_polyphony);
if (p != _properties.end() && p->second.is_valid() && p->second.type() == Atom::INT)
poly = p->second.get_int32();
- _create_event = new CreatePatch(_engine, sub_request, _time,
- path, poly, _properties);
+ _create_event = new CreatePatch(_engine, _request_client, _request_id, _time,
+ path, poly, _properties);
} else if (is_node) {
const iterator p = _properties.find(uris.rdf_instanceOf);
- _create_event = new CreateNode(_engine, sub_request, _time,
- path, p->second.get_uri(), _properties);
+ _create_event = new CreateNode(_engine, _request_client, _request_id, _time,
+ path, p->second.get_uri(), _properties);
} else if (is_port) {
- _create_event = new CreatePort(_engine, sub_request, _time,
- path, is_output, _properties);
+ _create_event = new CreatePort(_engine, _request_client, _request_id, _time,
+ path, is_output, _properties);
}
if (_create_event) {
_create_event->pre_process();
@@ -194,7 +190,8 @@ SetMetadata::pre_process()
_error = BAD_VALUE_TYPE;
}
} else if (key == uris.ingen_value) {
- SetPortValue* ev = new SetPortValue(_engine, _request, _time, port, value);
+ SetPortValue* ev = new SetPortValue(
+ _engine, _request_client, _request_id, _time, port, value);
ev->pre_process();
_set_events.push_back(ev);
} else if (key == uris.ingen_controlBinding) {
@@ -359,7 +356,7 @@ SetMetadata::post_process()
if (_create_event) {
_create_event->post_process();
} else {
- _request->respond_ok();
+ respond_ok();
if (_create)
_engine.broadcaster()->put(_subject, _properties, _context);
else
@@ -367,18 +364,18 @@ SetMetadata::post_process()
}
break;
case NOT_FOUND:
- _request->respond_error((boost::format(
+ respond_error((boost::format(
"Unable to find object `%1%'") % _subject).str());
break;
case INTERNAL:
- _request->respond_error("Internal error");
+ respond_error("Internal error");
break;
case BAD_OBJECT_TYPE:
- _request->respond_error((boost::format(
+ respond_error((boost::format(
"Bad type for object `%1%'") % _subject).str());
break;
case BAD_VALUE_TYPE:
- _request->respond_error((boost::format(
+ respond_error((boost::format(
"Bad metadata value type for subject `%1%' predicate `%2%'")
% _subject % _error_predicate).str());
break;