diff options
author | Ted Ross <tross@apache.org> | 2010-03-02 03:25:56 +0000 |
---|---|---|
committer | Ted Ross <tross@apache.org> | 2010-03-02 03:25:56 +0000 |
commit | 26883f5dcdd17e31fad56d89bda169eb1e5a281f (patch) | |
tree | 9a6706120771ed48990db8b416d35f949d060a34 /qpid/cpp/src/qmf/engine/DataImpl.cpp | |
parent | 4133cb8e05f8ea6bac29e1e5cf81afaa3d3a591a (diff) | |
download | qpid-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.cpp | 40 |
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(); } |