summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/client/FailoverConnection.cpp
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2008-10-17 16:45:24 +0000
committerAlan Conway <aconway@apache.org>2008-10-17 16:45:24 +0000
commit7db0c0970eac260626263314c30f0e20d4ef6c21 (patch)
tree231024436b5b7185f63972d90318acce97816c22 /cpp/src/qpid/client/FailoverConnection.cpp
parenta039e57108ed06586e73a255dc824ed27fc6de2a (diff)
downloadqpid-python-7db0c0970eac260626263314c30f0e20d4ef6c21.tar.gz
QPID-1367 Mick Goulish: improvements to client-side failover.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@705668 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/client/FailoverConnection.cpp')
-rw-r--r--cpp/src/qpid/client/FailoverConnection.cpp24
1 files changed, 20 insertions, 4 deletions
diff --git a/cpp/src/qpid/client/FailoverConnection.cpp b/cpp/src/qpid/client/FailoverConnection.cpp
index e98de868de..33b06a6a1a 100644
--- a/cpp/src/qpid/client/FailoverConnection.cpp
+++ b/cpp/src/qpid/client/FailoverConnection.cpp
@@ -36,7 +36,6 @@ namespace client {
FailoverConnection::FailoverConnection ( ) :
- name(),
failoverCompleteTime(0)
{
connection.registerFailureCallback
@@ -59,7 +58,6 @@ FailoverConnection::open ( const std::string& host,
settings.host = host;
settings.port = port;
settings.username = uid;
- settings.username = uid;
settings.password = pwd;
settings.virtualhost = virtualhost;
settings.maxFrameSize = maxFrameSize;
@@ -124,9 +122,19 @@ FailoverConnection::registerFailureCallback ( boost::function<void ()> /*fn*/ )
void
FailoverConnection::failover ( )
{
+ std::vector<FailoverSession *>::iterator sessions_iterator;
+
+ for ( sessions_iterator = sessions.begin();
+ sessions_iterator != sessions.end();
+ ++ sessions_iterator )
+ {
+ FailoverSession * fs = * sessions_iterator;
+ fs->failover_in_progress = true;
+ }
+
std::vector<Url> knownBrokers = connection.getKnownBrokers();
if (knownBrokers.empty())
- throw Exception(QPID_MSG("FailoverConnection::failover " << name << " no known brokers."));
+ throw Exception(QPID_MSG("FailoverConnection::failover no known brokers."));
Connection newConnection;
for (std::vector<Url>::iterator i = knownBrokers.begin(); i != knownBrokers.end(); ++i) {
@@ -148,7 +156,6 @@ FailoverConnection::failover ( )
*/
// FIXME aconway 2008-10-10: thread unsafe, possible race with concurrent newSession
- std::vector<FailoverSession *>::iterator sessions_iterator;
for ( sessions_iterator = sessions.begin();
sessions_iterator < sessions.end();
++ sessions_iterator
@@ -173,6 +180,15 @@ FailoverConnection::failover ( )
FailoverSession * fs = * sessions_iterator;
fs->failover ( );
}
+
+ for ( sessions_iterator = sessions.begin();
+ sessions_iterator < sessions.end();
+ ++ sessions_iterator
+ )
+ {
+ FailoverSession * fs = * sessions_iterator;
+ fs->failover_in_progress = false;
+ }
}