summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/console/SessionManager.cpp
diff options
context:
space:
mode:
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();