summaryrefslogtreecommitdiffstats
path: root/src/engine/events/RequestMetadataEvent.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/events/RequestMetadataEvent.cpp')
-rw-r--r--src/engine/events/RequestMetadataEvent.cpp21
1 files changed, 13 insertions, 8 deletions
diff --git a/src/engine/events/RequestMetadataEvent.cpp b/src/engine/events/RequestMetadataEvent.cpp
index fe1f0cab..5d0b15bc 100644
--- a/src/engine/events/RequestMetadataEvent.cpp
+++ b/src/engine/events/RequestMetadataEvent.cpp
@@ -37,7 +37,7 @@ using namespace Shared;
RequestMetadataEvent::RequestMetadataEvent(Engine& engine,
SharedPtr<Responder> responder,
SampleCount timestamp,
- bool is_property,
+ bool is_meta,
const URI& subject,
const URI& key)
: QueuedEvent(engine, responder, timestamp)
@@ -46,7 +46,7 @@ RequestMetadataEvent::RequestMetadataEvent(Engine& engine,
, _uri(subject)
, _key(key)
, _resource(0)
- , _is_property(is_property)
+ , _is_meta(is_meta)
{
}
@@ -67,12 +67,17 @@ RequestMetadataEvent::pre_process()
}
}
- if (_key.str() == "ingen:value")
- _special_type = PORT_VALUE;
- else if (!is_object || _is_property)
+ GraphObjectImpl* obj = dynamic_cast<GraphObjectImpl*>(_resource);
+ if (obj) {
+ if (_key.str() == "ingen:value")
+ _special_type = PORT_VALUE;
+ else if (_is_meta)
+ _value = obj->meta().get_property(_key);
+ else
+ _value = obj->get_property(_key);
+ } else {
_value = _resource->get_property(_key);
- else
- _value = dynamic_cast<GraphObjectImpl*>(_resource)->get_variable(_key);
+ }
QueuedEvent::pre_process();
}
@@ -111,7 +116,7 @@ RequestMetadataEvent::post_process()
_responder->respond_error(msg);
} else {
_responder->respond_ok();
- _responder->client()->set_variable(_uri, _key, _value);
+ _responder->client()->set_property(_uri, _key, _value);
}
} else {
_responder->respond_error("Unknown client");