diff options
| author | Alan Conway <aconway@apache.org> | 2008-10-17 16:45:24 +0000 |
|---|---|---|
| committer | Alan Conway <aconway@apache.org> | 2008-10-17 16:45:24 +0000 |
| commit | 7db0c0970eac260626263314c30f0e20d4ef6c21 (patch) | |
| tree | 231024436b5b7185f63972d90318acce97816c22 /cpp/src/qpid/client/FailoverConnection.cpp | |
| parent | a039e57108ed06586e73a255dc824ed27fc6de2a (diff) | |
| download | qpid-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.cpp | 24 |
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; + } } |
