summaryrefslogtreecommitdiff
path: root/M4-RCs/qpid/cpp/src/qpid/client/FailoverManager.h
diff options
context:
space:
mode:
Diffstat (limited to 'M4-RCs/qpid/cpp/src/qpid/client/FailoverManager.h')
-rw-r--r--M4-RCs/qpid/cpp/src/qpid/client/FailoverManager.h134
1 files changed, 0 insertions, 134 deletions
diff --git a/M4-RCs/qpid/cpp/src/qpid/client/FailoverManager.h b/M4-RCs/qpid/cpp/src/qpid/client/FailoverManager.h
deleted file mode 100644
index 8b6eeda8a1..0000000000
--- a/M4-RCs/qpid/cpp/src/qpid/client/FailoverManager.h
+++ /dev/null
@@ -1,134 +0,0 @@
-#ifndef QPID_CLIENT_FAILOVERMANAGER_H
-#define QPID_CLIENT_FAILOVERMANAGER_H
-
-/*
- *
- * 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 "Connection.h"
-#include "ConnectionSettings.h"
-#include "qpid/Exception.h"
-#include "qpid/client/AsyncSession.h"
-#include "qpid/sys/Monitor.h"
-#include <vector>
-
-namespace qpid {
-namespace client {
-
-struct CannotConnectException : qpid::Exception
-{
- CannotConnectException(const std::string& m) : qpid::Exception(m) {}
-};
-
-/**
- * Utility to manage failover.
- */
-class FailoverManager
-{
- public:
- /**
- * Interface to implement for doing work that can be resumed on
- * failover
- */
- struct Command
- {
- /**
- * This method will be called with isRetry=false when the
- * command is first executed. The session to use for the work
- * will be passed to the implementing class. If the connection
- * fails while the execute call is in progress, the
- * FailoverManager controlling the execution will re-establish
- * a connection, open a new session and call back to the
- * Command implementations execute method with the new session
- * and isRetry=true.
- */
- virtual void execute(AsyncSession& session, bool isRetry) = 0;
- virtual ~Command() {}
- };
-
- struct ReconnectionStrategy
- {
- /**
- * This method is called by the FailoverManager prior to
- * establishing a connection (or re-connection) and can be
- * used if the application wishes to edit or re-order the list
- * which will default to the list of known brokers for the
- * last connection.
- */
- virtual void editUrlList(std::vector<Url>& urls) = 0;
- virtual ~ReconnectionStrategy() {}
- };
-
- /**
- * Create a manager to control failover for a logical connection.
- *
- * @param settings the initial connection settings
- * @param strategy optional stratgey callback allowing application
- * to edit or reorder the list of urls to which reconnection is
- * attempted
- */
- FailoverManager(const ConnectionSettings& settings, ReconnectionStrategy* strategy = 0);
- /**
- * Return the current connection if open or attept to reconnect to
- * the specified list of urls. If no list is specified the list of
- * known brokers from the last connection will be used. If no list
- * is specified and this is the first connect attempt, the host
- * and port from the initial settings will be used.
- *
- * If the full list is tried and all attempts fail,
- * CannotConnectException is thrown.
- */
- Connection& connect(std::vector<Url> brokers = std::vector<Url>());
- /**
- * Return the current connection whether open or not
- */
- Connection& getConnection();
- /**
- * Close the current connection
- */
- void close();
- /**
- * Reliably execute the specified command. This involves creating
- * a session on which to carry out the work of the command,
- * handling failover occuring while exeuting that command and
- * re-starting the work.
- *
- * Multiple concurrent threads can call execute with different
- * commands; each thread will be allocated its own
- * session. FailoverManager will coordinate the different threads
- * on failover to ensure they continue to use the same logical
- * connection.
- */
- void execute(Command&);
- private:
- enum State {IDLE, CONNECTING, CANT_CONNECT};
-
- qpid::sys::Monitor lock;
- Connection connection;
- ConnectionSettings settings;
- ReconnectionStrategy* strategy;
- State state;
-
- void attempt(Connection&, ConnectionSettings settings, std::vector<Url> urls);
- void attempt(Connection&, ConnectionSettings settings);
-};
-}} // namespace qpid::client
-
-#endif /*!QPID_CLIENT_FAILOVERMANAGER_H*/