summaryrefslogtreecommitdiff
path: root/qpid/cpp/src/qmf/engine/DataImpl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/cpp/src/qmf/engine/DataImpl.cpp')
-rw-r--r--qpid/cpp/src/qmf/engine/DataImpl.cpp40
1 files changed, 34 insertions, 6 deletions
diff --git a/qpid/cpp/src/qmf/engine/DataImpl.cpp b/qpid/cpp/src/qmf/engine/DataImpl.cpp
index 7eced7e504..ab7d5f2178 100644
--- a/qpid/cpp/src/qmf/engine/DataImpl.cpp
+++ b/qpid/cpp/src/qmf/engine/DataImpl.cpp
@@ -27,27 +27,44 @@ using namespace qpid::sys;
using namespace qpid::messaging;
DataImpl::DataImpl() :
- objectClass(0), createTime(uint64_t(Duration(now()))), destroyTime(0), lastUpdatedTime(createTime)
+ objectClass(0), createTime(uint64_t(Duration(now()))), destroyTime(0), lastUpdatedTime(createTime),
+ manager(0)
{
}
DataImpl::DataImpl(SchemaClass* type, const qpid::messaging::Variant::Map& v) :
values(v), objectClass(type), createTime(uint64_t(Duration(now()))),
- destroyTime(0), lastUpdatedTime(createTime)
+ destroyTime(0), lastUpdatedTime(createTime), manager(0)
{
}
-void DataImpl::touch()
+void DataImpl::modifyStart()
{
+ Mutex::ScopedLock _lock(lock);
lastUpdatedTime = uint64_t(Duration(now()));
+ if (manager != 0)
+ manager->modifyStart(parent);
+}
+
+
+void DataImpl::modifyDone()
+{
+ Mutex::ScopedLock _lock(lock);
+ if (manager != 0)
+ manager->modifyDone(parent);
}
void DataImpl::destroy()
{
+ Mutex::ScopedLock _lock(lock);
destroyTime = uint64_t(Duration(now()));
+ if (manager != 0)
+ manager->destroy(parent);
+ parent.reset();
+ manager = 0;
}
Variant::Map DataImpl::asMap() const
@@ -62,6 +79,18 @@ Variant::Map DataImpl::asMap() const
return map;
}
+Variant::Map DataImpl::asMapDelta(Data&) const
+{
+ Variant::Map map;
+ return map;
+}
+
+void DataImpl::registerManager(DataManager* m, DataPtr d)
+{
+ Mutex::ScopedLock _lock(lock);
+ manager = m;
+ parent = d;
+}
//==================================================================
// Wrappers
@@ -76,9 +105,8 @@ Variant::Map& Data::getValues() { return impl->getValues(); }
const Variant::Map& Data::getSubtypes() const { return impl->getSubtypes(); }
Variant::Map& Data::getSubtypes() { return impl->getSubtypes(); }
const SchemaClass* Data::getSchema() const { return impl->getSchema(); }
-void Data::setSchema(SchemaClass* schema) { impl->setSchema(schema); }
const char* Data::getKey() const { return impl->getKey(); }
void Data::setKey(const char* key) { impl->setKey(key); }
-void Data::touch() { impl->touch(); }
+void Data::modifyStart() { impl->modifyStart(); }
+void Data::modifyDone() { impl->modifyDone(); }
void Data::destroy() { impl->destroy(); }
-Variant::Map Data::asMap() const { return impl->asMap(); }