diff options
Diffstat (limited to 'cpp/src/Ice/ConnectionI.cpp')
-rw-r--r-- | cpp/src/Ice/ConnectionI.cpp | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/cpp/src/Ice/ConnectionI.cpp b/cpp/src/Ice/ConnectionI.cpp index e7ea83d6fe7..f4ecf9e3f51 100644 --- a/cpp/src/Ice/ConnectionI.cpp +++ b/cpp/src/Ice/ConnectionI.cpp @@ -2158,15 +2158,18 @@ Ice::ConnectionI::setState(State state) } } - if(_observer) + if(_instance->initializationData().observer) { ConnectionState oldState = toConnectionState(_state); ConnectionState newState = toConnectionState(state); if(oldState != newState) { - _observer->stateChanged(oldState, newState); + _observer.attach(_instance->initializationData().observer->getConnectionObserver(initConnectionInfo(), + _endpoint, + newState, + _observer.get())); } - if(state == StateClosed && _exception.get()) + if(_observer && state == StateClosed && _exception.get()) { if(!(dynamic_cast<const CloseConnectionException*>(_exception.get()) || dynamic_cast<const ForcedCloseConnectionException*>(_exception.get()) || @@ -2261,14 +2264,6 @@ Ice::ConnectionI::initialize(SocketOperation operation) const_cast<string&>(_desc) = _transceiver->toString(); setState(StateNotValidated); - if(_instance->initializationData().observer) - { - _observer.attach(_instance->initializationData().observer->getConnectionObserver(initConnectionInfo(), - _endpoint, - ConnectionStateValidating, - 0)); - } - return true; } |