diff options
| author | Carl C. Trieloff <cctrieloff@apache.org> | 2007-10-26 02:37:54 +0000 |
|---|---|---|
| committer | Carl C. Trieloff <cctrieloff@apache.org> | 2007-10-26 02:37:54 +0000 |
| commit | b19d20c0277ff20609f9f0774224accd5ff3e452 (patch) | |
| tree | c2842f576f8b8f7a1bfc30ad3165fb28116d7f95 /cpp/src/qpid/broker/ManagementExchange.cpp | |
| parent | 8863c11dabfec9fee5d398361250aa6b4a46e538 (diff) | |
| download | qpid-python-b19d20c0277ff20609f9f0774224accd5ff3e452.tar.gz | |
- added patch from Tedd
- QPID-660
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@588478 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/broker/ManagementExchange.cpp')
| -rw-r--r-- | cpp/src/qpid/broker/ManagementExchange.cpp | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/cpp/src/qpid/broker/ManagementExchange.cpp b/cpp/src/qpid/broker/ManagementExchange.cpp new file mode 100644 index 0000000000..d3de8bc8e1 --- /dev/null +++ b/cpp/src/qpid/broker/ManagementExchange.cpp @@ -0,0 +1,77 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ + +#include "ManagementExchange.h" +#include "qpid/log/Statement.h" + +using namespace qpid::broker; +using namespace qpid::framing; +using namespace qpid::sys; + +ManagementExchange::ManagementExchange (const string& _name) : + Exchange (_name), TopicExchange(_name) {} +ManagementExchange::ManagementExchange (const std::string& _name, + bool _durable, + const FieldTable& _args) : + Exchange (_name, _durable, _args), + TopicExchange(_name, _durable, _args) {} + + +bool ManagementExchange::bind (Queue::shared_ptr queue, + const string& routingKey, + const FieldTable* args) +{ + bool result = TopicExchange::bind (queue, routingKey, args); + + // Notify the management agent that a new management client has bound to the + // exchange. + if (result) + managementAgent->clientAdded (); + + return result; +} + +void ManagementExchange::route (Deliverable& msg, + const string& routingKey, + const FieldTable* args) +{ + // Intercept management commands + if (routingKey.length () > 7 && + routingKey.substr (0, 7).compare ("method.") == 0) + { + QPID_LOG (debug, "ManagementExchange: Intercept command " << routingKey); + // TODO: Send intercepted commands to ManagementAgent for dispatch + return; + } + + TopicExchange::route (msg, routingKey, args); +} + +void ManagementExchange::setManagmentAgent (ManagementAgent::shared_ptr agent) +{ + managementAgent = agent; +} + + +ManagementExchange::~ManagementExchange() {} + +const std::string ManagementExchange::typeName("management"); + |
