diff options
author | Benoit Foucher <benoit@zeroc.com> | 2009-03-12 10:26:37 +0100 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2009-03-12 10:26:37 +0100 |
commit | 2f8ff1f01af2416dce3cda6c6093374d95fc453d (patch) | |
tree | 9392f8267b919d2a8974eb275515e0212f74deed /cpp/src/Ice/ConnectionFactory.h | |
parent | Merge branch 'R3_3_branch' of ssh://cvs.zeroc.com/home/git/ice into R3_3_branch (diff) | |
download | ice-2f8ff1f01af2416dce3cda6c6093374d95fc453d.tar.bz2 ice-2f8ff1f01af2416dce3cda6c6093374d95fc453d.tar.xz ice-2f8ff1f01af2416dce3cda6c6093374d95fc453d.zip |
- Fixed potential assert when establishing connection for proxies with
different endpoint combinations
- Added test for connection establishment using proxies with different
endpoint combination.
- Improved connection establishment to better handle failures when
many AMI requests (invoked on different proxies) are queued. The
failure is now reported to all pending requests.
Diffstat (limited to 'cpp/src/Ice/ConnectionFactory.h')
-rw-r--r-- | cpp/src/Ice/ConnectionFactory.h | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/cpp/src/Ice/ConnectionFactory.h b/cpp/src/Ice/ConnectionFactory.h index 7bd97ab70e1..89ef6bc514b 100644 --- a/cpp/src/Ice/ConnectionFactory.h +++ b/cpp/src/Ice/ConnectionFactory.h @@ -75,6 +75,7 @@ private: } bool operator<(const ConnectorInfo& other) const; + bool operator==(const ConnectorInfo& other) const; ConnectorPtr connector; EndpointIPtr endpoint; @@ -99,8 +100,15 @@ private: void getConnection(); void nextConnector(); + void setConnection(const Ice::ConnectionIPtr&, bool); + void setException(const Ice::LocalException&); + + bool hasConnector(const ConnectorInfo&); + bool removeConnectors(const std::vector<ConnectorInfo>&); + void removeFromPending(); + bool operator<(const ConnectCallback&) const; - + private: const OutgoingConnectionFactoryPtr _factory; @@ -120,7 +128,13 @@ private: void incPendingConnectCount(); void decPendingConnectCount(); Ice::ConnectionIPtr getConnection(const std::vector<ConnectorInfo>&, const ConnectCallbackPtr&, bool&); - void finishGetConnection(const std::vector<ConnectorInfo>&, const ConnectCallbackPtr&, const Ice::ConnectionIPtr&); + void finishGetConnection(const std::vector<ConnectorInfo>&, const ConnectorInfo&, const Ice::ConnectionIPtr&, + const ConnectCallbackPtr&); + void finishGetConnection(const std::vector<ConnectorInfo>&, const Ice::LocalException&, const ConnectCallbackPtr&); + + bool addToPending(const ConnectCallbackPtr&, const std::vector<ConnectorInfo>&); + void removeFromPending(const ConnectCallbackPtr&, const std::vector<ConnectorInfo>&); + Ice::ConnectionIPtr findConnection(const std::vector<ConnectorInfo>&, bool&); Ice::ConnectionIPtr createConnection(const TransceiverPtr&, const ConnectorInfo&); |