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 | |
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')
-rw-r--r-- | cpp/bindings/qmf2/examples/python/find_agents.py | 3 | ||||
-rw-r--r-- | cpp/bindings/qmf2/examples/ruby/find_agents.rb | 4 | ||||
-rw-r--r-- | cpp/bindings/qmf2/python/qmf2.py | 3 | ||||
-rw-r--r-- | cpp/bindings/qmf2/ruby/qmf2.rb | 3 | ||||
-rw-r--r-- | cpp/include/qmf/ConsoleEvent.h | 2 | ||||
-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 |
8 files changed, 59 insertions, 2 deletions
diff --git a/cpp/bindings/qmf2/examples/python/find_agents.py b/cpp/bindings/qmf2/examples/python/find_agents.py index 15cc83649c..5fd71b3f1c 100644 --- a/cpp/bindings/qmf2/examples/python/find_agents.py +++ b/cpp/bindings/qmf2/examples/python/find_agents.py @@ -37,6 +37,9 @@ class FindAgents(qmf2.ConsoleHandler): def agentSchemaUpdated(self, agent): print "Agent Schema Updated: %r" % agent + def eventRaised(self, agent, data, timestamp, severity): + print "Event: data=%r time=%d sev=%d" % (data.getProperties(), timestamp, severity) + url = "localhost" diff --git a/cpp/bindings/qmf2/examples/ruby/find_agents.rb b/cpp/bindings/qmf2/examples/ruby/find_agents.rb index deefd5491a..712e5007be 100644 --- a/cpp/bindings/qmf2/examples/ruby/find_agents.rb +++ b/cpp/bindings/qmf2/examples/ruby/find_agents.rb @@ -41,6 +41,10 @@ class FindAgents < Qmf2::ConsoleHandler def agent_schema_updated(agent) puts "Agent with new Schemata: #{agent.to_s}" end + + def event_raised(agent, data, timestamp, severity) + puts "Event Raised time=#{timestamp} sev=#{severity} data=#{data.properties}" + end end diff --git a/cpp/bindings/qmf2/python/qmf2.py b/cpp/bindings/qmf2/python/qmf2.py index 9bf464e155..61a5453f8e 100644 --- a/cpp/bindings/qmf2/python/qmf2.py +++ b/cpp/bindings/qmf2/python/qmf2.py @@ -173,6 +173,9 @@ class ConsoleHandler(Thread): elif event.getType() == cqmf2.CONSOLE_AGENT_SCHEMA_UPDATE: self.agentSchemaUpdated(Agent(event.getAgent())) + elif event.getType() == cqmf2.CONSOLE_EVENT: + self.eventRaised(Agent(event.getAgent()), Data(event.getData(0)), event.getTimestamp(), event.getSeverity()) + ## ## The following methods are intended to be overridden in a sub-class. They are ## handlers for events that occur on QMF consoles. diff --git a/cpp/bindings/qmf2/ruby/qmf2.rb b/cpp/bindings/qmf2/ruby/qmf2.rb index 642af35eca..6d1741ebc0 100644 --- a/cpp/bindings/qmf2/ruby/qmf2.rb +++ b/cpp/bindings/qmf2/ruby/qmf2.rb @@ -297,6 +297,9 @@ module Qmf2 when Cqmf2::CONSOLE_AGENT_SCHEMA_UPDATE agent_schema_updated(Agent.new(event.getAgent)) + when Cqmf2::CONSOLE_EVENT + event_raised(Agent.new(event.getAgent), Data.new(event.getData(0)), event.getTimestamp, event.getSeverity) + end end end diff --git a/cpp/include/qmf/ConsoleEvent.h b/cpp/include/qmf/ConsoleEvent.h index 54272334a4..b836b629af 100644 --- a/cpp/include/qmf/ConsoleEvent.h +++ b/cpp/include/qmf/ConsoleEvent.h @@ -74,6 +74,8 @@ namespace qmf { QMF_EXTERN Data getData(uint32_t) const; QMF_EXTERN bool isFinal() const; QMF_EXTERN const qpid::types::Variant::Map& getArguments() const; + QMF_EXTERN int getSeverity() const; + QMF_EXTERN uint64_t getTimestamp() const; #ifndef SWIG private: 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 |