summaryrefslogtreecommitdiffstats
path: root/src/engine/events/SetMetadata.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/events/SetMetadata.cpp')
-rw-r--r--src/engine/events/SetMetadata.cpp14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/engine/events/SetMetadata.cpp b/src/engine/events/SetMetadata.cpp
index d1a1c53e..a6b446d4 100644
--- a/src/engine/events/SetMetadata.cpp
+++ b/src/engine/events/SetMetadata.cpp
@@ -54,7 +54,7 @@ SetMetadata::SetMetadata(
SharedPtr<Request> request,
SampleCount timestamp,
bool create,
- bool meta,
+ Resource::Graph context,
const URI& subject,
const Properties& properties,
const Properties& remove)
@@ -67,10 +67,14 @@ SetMetadata::SetMetadata(
, _patch(NULL)
, _compiled_patch(NULL)
, _create(create)
- , _is_meta(meta)
+ , _context(context)
{
+ if (context != Resource::DEFAULT) {
+ Resource::set_context(_properties, context);
+ }
+
/*
- LOG(info) << "Set " << subject << " {" << endl;
+ LOG(info) << "Set " << subject << " : " << context << " {" << endl;
typedef Resource::Properties::const_iterator iterator;
for (iterator i = properties.begin(); i != properties.end(); ++i)
LOG(info) << " " << i->first << " = " << i->second << " :: " << i->second.type() << endl;
@@ -177,7 +181,7 @@ SetMetadata::pre_process()
const Raul::Atom& value = p->second;
SpecialType op = NONE;
if (obj) {
- Resource& resource = _is_meta ? obj->meta() : *obj;
+ Resource& resource = *obj;
resource.add_property(key, value);
PortImpl* port = dynamic_cast<PortImpl*>(_object);
@@ -353,7 +357,7 @@ SetMetadata::post_process()
else
_request->respond_ok();
if (_create)
- _engine.broadcaster()->put(_subject, _properties);
+ _engine.broadcaster()->put(_subject, _properties, _context);
else
_engine.broadcaster()->delta(_subject, _remove, _properties);
break;