summaryrefslogtreecommitdiff
path: root/qpid/cpp/src/qmf/engine/DataImpl.cpp
diff options
context:
space:
mode:
authorTed Ross <tross@apache.org>2010-03-02 03:25:56 +0000
committerTed Ross <tross@apache.org>2010-03-02 03:25:56 +0000
commit26883f5dcdd17e31fad56d89bda169eb1e5a281f (patch)
tree9a6706120771ed48990db8b416d35f949d060a34 /qpid/cpp/src/qmf/engine/DataImpl.cpp
parent4133cb8e05f8ea6bac29e1e5cf81afaa3d3a591a (diff)
downloadqpid-python-qmf-devel0.7.tar.gz
Update branch with new Agent engine implementation:qmf-devel0.7
- Data hooks to allow batched and partial updates from internal storage. - Capability for immediate updates for deletion and changing of discrete values. - Implementation of query and event-raise. git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/qmf-devel0.7@917854 13f79535-47bb-0310-9956-ffa450edef68
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(); }