diff options
author | Benoit Foucher <benoit@zeroc.com> | 2012-08-06 09:56:04 +0200 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2012-08-06 09:56:04 +0200 |
commit | c1e8bda5abc33ae40e3603c1a3fb6ba8645780a0 (patch) | |
tree | cf400743403ef2703a24b5044ab49c5e2385baf5 /cpp/src/Ice/EndpointI.cpp | |
parent | Fixes (diff) | |
download | ice-c1e8bda5abc33ae40e3603c1a3fb6ba8645780a0.tar.bz2 ice-c1e8bda5abc33ae40e3603c1a3fb6ba8645780a0.tar.xz ice-c1e8bda5abc33ae40e3603c1a3fb6ba8645780a0.zip |
Updates
Diffstat (limited to 'cpp/src/Ice/EndpointI.cpp')
-rw-r--r-- | cpp/src/Ice/EndpointI.cpp | 31 |
1 files changed, 8 insertions, 23 deletions
diff --git a/cpp/src/Ice/EndpointI.cpp b/cpp/src/Ice/EndpointI.cpp index ab74afb660a..688cbfc10e6 100644 --- a/cpp/src/Ice/EndpointI.cpp +++ b/cpp/src/Ice/EndpointI.cpp @@ -13,6 +13,7 @@ #include <Ice/PropertiesI.h> #include <Ice/LoggerUtil.h> #include <IceUtil/MutexPtrLock.h> +#include <Ice/Observer.h> using namespace std; using namespace Ice::Instrumentation; @@ -191,15 +192,11 @@ vector<ConnectorPtr> IceInternal::EndpointHostResolver::resolve(const string& host, int port, const EndpointIPtr& endpoint) { vector<ConnectorPtr> connectors; - ObserverPtr observer; + ObserverHelperT<> observer; const ObserverResolverPtr& resolver = _instance->initializationData().observerResolver; if(resolver) { - observer = resolver->getEndpointResolveObserver(endpoint->getInfo(), endpoint->toString()); - if(observer) - { - observer->attach(); - } + observer.attach(resolver->getEndpointResolveObserver(endpoint->getInfo(), endpoint->toString())); } try @@ -208,15 +205,7 @@ IceInternal::EndpointHostResolver::resolve(const string& host, int port, const E } catch(const Ice::LocalException& ex) { - if(observer) - { - observer->failed(ex.ice_name()); - } - } - - if(observer) - { - observer->detach(); + observer.failed(ex.ice_name()); } return connectors; } @@ -297,7 +286,7 @@ IceInternal::EndpointHostResolver::run() r = _queue.front(); _queue.pop_front(); - threadObserver = _observer; + threadObserver = _observer.get(); } const ProtocolSupport protocol = _instance->protocolSupport(); @@ -305,14 +294,14 @@ IceInternal::EndpointHostResolver::run() { if(threadObserver) { - threadObserver->stateChanged(ThreadStateIdle, ThreadStateInUseForMisc); + threadObserver->stateChanged(ThreadStateIdle, ThreadStateInUseForOther); } r.callback->connectors(r.endpoint->connectors(getAddresses(r.host, r.port, protocol, true))); if(threadObserver) { - threadObserver->stateChanged(ThreadStateInUseForMisc, ThreadStateIdle); + threadObserver->stateChanged(ThreadStateInUseForOther, ThreadStateIdle); } } catch(const Ice::LocalException& ex) @@ -351,11 +340,7 @@ IceInternal::EndpointHostResolver::updateObserver() const ObserverResolverPtr& resolver = _instance->initializationData().observerResolver; if(resolver) { - _observer = resolver->getThreadObserver("Communicator", name(), ThreadStateIdle, _observer); - if(_observer) - { - _observer->attach(); - } + _observer.attach(resolver->getThreadObserver("Communicator", name(), ThreadStateIdle, _observer.get())); } } |