diff options
author | Ted Ross <tross@apache.org> | 2011-02-04 08:22:30 +0000 |
---|---|---|
committer | Ted Ross <tross@apache.org> | 2011-02-04 08:22:30 +0000 |
commit | e46939c93ba0682d74f025eeec7bdb88229b4277 (patch) | |
tree | eb55184ad87bc9c31168bf955256959541fc117b /cpp/src | |
parent | e7f02a8b8b25d9fcce6525ccc5b794f8438995f0 (diff) | |
download | qpid-python-e46939c93ba0682d74f025eeec7bdb88229b4277.tar.gz |
Added missing even handling in the console.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1067111 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src')
-rw-r--r-- | cpp/src/qmf/Agent.cpp | 38 | ||||
-rw-r--r-- | cpp/src/qmf/ConsoleEvent.cpp | 2 | ||||
-rw-r--r-- | cpp/src/qmf/ConsoleEventImpl.h | 6 |
3 files changed, 44 insertions, 2 deletions
diff --git a/cpp/src/qmf/Agent.cpp b/cpp/src/qmf/Agent.cpp index 8783cfa832..176cadf0c1 100644 --- a/cpp/src/qmf/Agent.cpp +++ b/cpp/src/qmf/Agent.cpp @@ -377,9 +377,43 @@ void AgentImpl::handleMethodResponse(const Variant::Map& response, const Message } -void AgentImpl::handleDataIndication(const Variant::List&, const Message&) +void AgentImpl::handleDataIndication(const Variant::List& list, const Message& msg) { - // TODO + Variant::Map::const_iterator aIter; + const Variant::Map& props(msg.getProperties()); + boost::shared_ptr<SyncContext> context; + + aIter = props.find("qmf.content"); + if (aIter == props.end()) + return; + + string content_type(aIter->second.asString()); + if (content_type != "_event") + return; + + for (Variant::List::const_iterator lIter = list.begin(); lIter != list.end(); lIter++) { + const Variant::Map& eventMap(lIter->asMap()); + Data data(new DataImpl(eventMap, this)); + int severity(SEV_NOTICE); + uint64_t timestamp(0); + + aIter = eventMap.find("_severity"); + if (aIter != eventMap.end()) + severity = int(aIter->second.asInt8()); + + aIter = eventMap.find("_timestamp"); + if (aIter != eventMap.end()) + timestamp = aIter->second.asUint64(); + + auto_ptr<ConsoleEventImpl> eventImpl(new ConsoleEventImpl(CONSOLE_EVENT)); + eventImpl->setAgent(this); + eventImpl->addData(data); + eventImpl->setSeverity(severity); + eventImpl->setTimestamp(timestamp); + if (data.hasSchema()) + learnSchemaId(data.getSchemaId()); + session.enqueueEvent(eventImpl.release()); + } } diff --git a/cpp/src/qmf/ConsoleEvent.cpp b/cpp/src/qmf/ConsoleEvent.cpp index b76abc83c6..b2a5e321c7 100644 --- a/cpp/src/qmf/ConsoleEvent.cpp +++ b/cpp/src/qmf/ConsoleEvent.cpp @@ -44,6 +44,8 @@ uint32_t ConsoleEvent::getDataCount() const { return impl->getDataCount(); } Data ConsoleEvent::getData(uint32_t i) const { return impl->getData(i); } bool ConsoleEvent::isFinal() const { return impl->isFinal(); } const Variant::Map& ConsoleEvent::getArguments() const { return impl->getArguments(); } +int ConsoleEvent::getSeverity() const { return impl->getSeverity(); } +uint64_t ConsoleEvent::getTimestamp() const { return impl->getTimestamp(); } SchemaId ConsoleEventImpl::getSchemaId(uint32_t i) const diff --git a/cpp/src/qmf/ConsoleEventImpl.h b/cpp/src/qmf/ConsoleEventImpl.h index e7acb54152..9843971456 100644 --- a/cpp/src/qmf/ConsoleEventImpl.h +++ b/cpp/src/qmf/ConsoleEventImpl.h @@ -42,6 +42,8 @@ namespace qmf { void addSchemaId(const SchemaId& s) { newSchemaIds.push_back(SchemaId(s)); } void setFinal() { final = true; } void setArguments(const qpid::types::Variant::Map& a) { arguments = a; } + void setSeverity(int s) { severity = s; } + void setTimestamp(uint64_t t) { timestamp = t; } // // Methods from API handle @@ -56,6 +58,8 @@ namespace qmf { Data getData(uint32_t i) const; bool isFinal() const { return final; } const qpid::types::Variant::Map& getArguments() const { return arguments; } + int getSeverity() const { return severity; } + uint64_t getTimestamp() const { return timestamp; } private: const ConsoleEventCode eventType; @@ -66,6 +70,8 @@ namespace qmf { std::list<Data> dataList; std::list<SchemaId> newSchemaIds; qpid::types::Variant::Map arguments; + int severity; + uint64_t timestamp; }; struct ConsoleEventImplAccess |