summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/console/SessionManager.cpp
diff options
context:
space:
mode:
authorKenneth Anthony Giusti <kgiusti@apache.org>2010-05-21 17:39:51 +0000
committerKenneth Anthony Giusti <kgiusti@apache.org>2010-05-21 17:39:51 +0000
commita3462820c7f5af8bbb7300334c49d47b239fe901 (patch)
treea7b80c797d774f43130dd67e9c6e00ca7fee1ced /cpp/src/qpid/console/SessionManager.cpp
parentb8d8b5b3b620e63052f60524ebb54ef0be92c6d1 (diff)
downloadqpid-python-a3462820c7f5af8bbb7300334c49d47b239fe901.tar.gz
QMF: add bindEvent api to allow filtering of unsolicted events.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@947084 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/console/SessionManager.cpp')
-rw-r--r--cpp/src/qpid/console/SessionManager.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/cpp/src/qpid/console/SessionManager.cpp b/cpp/src/qpid/console/SessionManager.cpp
index 0285c5f34a..4f39095a54 100644
--- a/cpp/src/qpid/console/SessionManager.cpp
+++ b/cpp/src/qpid/console/SessionManager.cpp
@@ -138,6 +138,33 @@ void SessionManager::bindClass(const std::string& packageName, const std::string
(*iter)->addBinding(key.str());
}
+
+void SessionManager::bindEvent(const ClassKey& classKey)
+{
+ bindEvent(classKey.getPackageName(), classKey.getClassName());
+}
+
+
+void SessionManager::bindEvent(const std::string& packageName, const std::string& eventName)
+{
+ if (!settings.userBindings) throw Exception("Session not configured for userBindings.");
+ if (settings.rcvEvents) throw Exception("Session already configured to receive all events.");
+
+ stringstream key;
+ key << "console.event.*.*." << packageName;
+ if (eventName.length()) {
+ key << "." << eventName << ".#";
+ } else {
+ key << ".#";
+ }
+
+ bindingKeyList.push_back(key.str());
+ for (vector<Broker*>::iterator iter = brokers.begin();
+ iter != brokers.end(); iter++)
+ (*iter)->addBinding(key.str());
+}
+
+
void SessionManager::getAgents(Agent::Vector& agents, Broker* broker)
{
agents.clear();