diff options
author | Alan Conway <aconway@apache.org> | 2012-02-17 14:54:46 +0000 |
---|---|---|
committer | Alan Conway <aconway@apache.org> | 2012-02-17 14:54:46 +0000 |
commit | 0a8773c335509c2b9e9b96df360de190a266dcad (patch) | |
tree | 288469c17dacc37199b5f77498965fee7e778d95 /cpp/src/qpid/ha/HaPlugin.cpp | |
parent | d82ce6836f7f0e4f7d647b2dc603141f549869d3 (diff) | |
download | qpid-python-0a8773c335509c2b9e9b96df360de190a266dcad.tar.gz |
QPID-3603: Merge new HA foundations.
Merged from qpid-3603-7. This is basic support for the new HA approach.
For information & limitations see qpid/cpp/design_docs/new-ha-design.txt.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1245587 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/ha/HaPlugin.cpp')
-rw-r--r-- | cpp/src/qpid/ha/HaPlugin.cpp | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/cpp/src/qpid/ha/HaPlugin.cpp b/cpp/src/qpid/ha/HaPlugin.cpp new file mode 100644 index 0000000000..fc9e48411d --- /dev/null +++ b/cpp/src/qpid/ha/HaPlugin.cpp @@ -0,0 +1,67 @@ +/* + * + * Copyright (c) 2006 The Apache Software Foundation + * + * Licensed 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 "HaBroker.h" +#include "Settings.h" +#include "qpid/Plugin.h" +#include "qpid/Options.h" +#include "qpid/broker/Broker.h" + + +namespace qpid { +namespace ha { + +using namespace std; + +struct Options : public qpid::Options { + Settings& settings; + Options(Settings& s) : qpid::Options("HA Options"), settings(s) { + addOptions() + ("ha-enable", optValue(settings.enabled, "yes|no"), "Enable High Availability features") + ("ha-client-url", optValue(settings.clientUrl,"URL"), "URL that clients use to connect and fail over.") + ("ha-broker-url", optValue(settings.brokerUrl,"URL"), "URL that backup brokers use to connect and fail over.") + ("ha-username", optValue(settings.username, "USER"), "Username for connections between brokers") + ("ha-password", optValue(settings.password, "PASS"), "Password for connections between brokers") + ("ha-mechanism", optValue(settings.mechanism, "MECH"), "Authentication mechanism for connections between brokers") + ; + } +}; + +struct HaPlugin : public Plugin { + + Settings settings; + Options options; + auto_ptr<HaBroker> haBroker; + + HaPlugin() : options(settings) {} + + Options* getOptions() { return &options; } + + void earlyInitialize(Plugin::Target& ) {} + + void initialize(Plugin::Target& target) { + broker::Broker* broker = dynamic_cast<broker::Broker*>(&target); + if (broker && settings.enabled) { + haBroker.reset(new ha::HaBroker(*broker, settings)); + } else + QPID_LOG(notice, "HA: Disabled"); + } +}; + +static HaPlugin instance; // Static initialization. + +}} // namespace qpid::ha |