diff options
| author | Kenneth Anthony Giusti <kgiusti@apache.org> | 2010-05-21 17:39:51 +0000 |
|---|---|---|
| committer | Kenneth Anthony Giusti <kgiusti@apache.org> | 2010-05-21 17:39:51 +0000 |
| commit | a3462820c7f5af8bbb7300334c49d47b239fe901 (patch) | |
| tree | a7b80c797d774f43130dd67e9c6e00ca7fee1ced /cpp/src/qpid/console/SessionManager.cpp | |
| parent | b8d8b5b3b620e63052f60524ebb54ef0be92c6d1 (diff) | |
| download | qpid-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.cpp | 27 |
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(); |
