diff options
author | Ted Ross <tross@apache.org> | 2009-09-29 03:21:49 +0000 |
---|---|---|
committer | Ted Ross <tross@apache.org> | 2009-09-29 03:21:49 +0000 |
commit | 7661c82fc7aaca543582ef45582d87de3c5de5b7 (patch) | |
tree | 9de25825187c0a45df5880ce74e58befb6c4ec50 /cpp/src/qmf/engine/ConsoleImpl.cpp | |
parent | 576b578d61d0d31082587bf77a25a59da2ba738f (diff) | |
download | qpid-python-7661c82fc7aaca543582ef45582d87de3c5de5b7.tar.gz |
QMF Engine updates:
- Connected console handler callbacks
- Added string representations for a number of object classes
- Added a feature that completes query requests sent to disconnected agents
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@819819 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qmf/engine/ConsoleImpl.cpp')
-rw-r--r-- | cpp/src/qmf/engine/ConsoleImpl.cpp | 69 |
1 files changed, 64 insertions, 5 deletions
diff --git a/cpp/src/qmf/engine/ConsoleImpl.cpp b/cpp/src/qmf/engine/ConsoleImpl.cpp index c856f04c51..c2d1f51f2b 100644 --- a/cpp/src/qmf/engine/ConsoleImpl.cpp +++ b/cpp/src/qmf/engine/ConsoleImpl.cpp @@ -57,11 +57,13 @@ ConsoleEvent ConsoleEventImpl::copy() ::memset(&item, 0, sizeof(ConsoleEvent)); item.kind = kind; item.agent = agent.get(); - item.classKey = classKey.get(); - item.object = object; + item.classKey = classKey; + item.object = object.get(); item.context = context; item.event = event; item.timestamp = timestamp; + item.hasProps = hasProps; + item.hasStats = hasStats; STRING_REF(name); @@ -274,9 +276,11 @@ void ConsoleImpl::endSync(SyncQuery& sync) void ConsoleImpl::learnPackage(const string& packageName) { Mutex::ScopedLock _lock(lock); - if (packages.find(packageName) == packages.end()) + if (packages.find(packageName) == packages.end()) { packages.insert(pair<string, pair<ObjectClassList, EventClassList> > (packageName, pair<ObjectClassList, EventClassList>(ObjectClassList(), EventClassList()))); + eventNewPackage(packageName); + } } void ConsoleImpl::learnClass(SchemaObjectClass* cls) @@ -288,8 +292,10 @@ void ConsoleImpl::learnClass(SchemaObjectClass* cls) return; ObjectClassList& list = pIter->second.first; - if (list.find(key) == list.end()) + if (list.find(key) == list.end()) { list[key] = cls; + eventNewClass(key); + } } void ConsoleImpl::learnClass(SchemaEventClass* cls) @@ -301,8 +307,10 @@ void ConsoleImpl::learnClass(SchemaEventClass* cls) return; EventClassList& list = pIter->second.second; - if (list.find(key) == list.end()) + if (list.find(key) == list.end()) { list[key] = cls; + eventNewClass(key); + } } bool ConsoleImpl::haveClass(const SchemaClassKey* key) const @@ -333,6 +341,57 @@ SchemaObjectClass* ConsoleImpl::getSchema(const SchemaClassKey* key) const return iter->second; } +void ConsoleImpl::eventAgentAdded(boost::shared_ptr<AgentProxy> agent) +{ + ConsoleEventImpl::Ptr event(new ConsoleEventImpl(ConsoleEvent::AGENT_ADDED)); + event->agent = agent; + Mutex::ScopedLock _lock(lock); + eventQueue.push_back(event); +} + +void ConsoleImpl::eventAgentDeleted(boost::shared_ptr<AgentProxy> agent) +{ + ConsoleEventImpl::Ptr event(new ConsoleEventImpl(ConsoleEvent::AGENT_DELETED)); + event->agent = agent; + Mutex::ScopedLock _lock(lock); + eventQueue.push_back(event); +} + +void ConsoleImpl::eventNewPackage(const string& packageName) +{ + ConsoleEventImpl::Ptr event(new ConsoleEventImpl(ConsoleEvent::NEW_PACKAGE)); + event->name = packageName; + Mutex::ScopedLock _lock(lock); + eventQueue.push_back(event); +} + +void ConsoleImpl::eventNewClass(const SchemaClassKey* key) +{ + ConsoleEventImpl::Ptr event(new ConsoleEventImpl(ConsoleEvent::NEW_CLASS)); + event->classKey = key; + Mutex::ScopedLock _lock(lock); + eventQueue.push_back(event); +} + +void ConsoleImpl::eventObjectUpdate(ObjectPtr object, bool prop, bool stat) +{ + ConsoleEventImpl::Ptr event(new ConsoleEventImpl(ConsoleEvent::OBJECT_UPDATE)); + event->object = object; + event->hasProps = prop; + event->hasStats = stat; + Mutex::ScopedLock _lock(lock); + eventQueue.push_back(event); +} + +void ConsoleImpl::eventAgentHeartbeat(boost::shared_ptr<AgentProxy> agent, uint64_t timestamp) +{ + ConsoleEventImpl::Ptr event(new ConsoleEventImpl(ConsoleEvent::AGENT_HEARTBEAT)); + event->agent = agent; + event->timestamp = timestamp; + Mutex::ScopedLock _lock(lock); + eventQueue.push_back(event); +} + //================================================================== // Wrappers //================================================================== |