summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/ConnectionI.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Ice/ConnectionI.cpp')
-rw-r--r--cpp/src/Ice/ConnectionI.cpp38
1 files changed, 12 insertions, 26 deletions
diff --git a/cpp/src/Ice/ConnectionI.cpp b/cpp/src/Ice/ConnectionI.cpp
index 729bc82cc23..c839d76b49b 100644
--- a/cpp/src/Ice/ConnectionI.cpp
+++ b/cpp/src/Ice/ConnectionI.cpp
@@ -139,7 +139,7 @@ IceInternal::ConnectionReaper::add(const ConnectionIPtr& connection)
_connections.push_back(connection);
if(connection->_observer.get())
{
- connection->_observer->getObserver()->detach();
+ connection->_observer.reset(0);
}
}
@@ -156,12 +156,6 @@ Ice::ConnectionI::Observer::Observer(const BasicStream& readStream, const BasicS
}
void
-Ice::ConnectionI::Observer::setObserver(const ConnectionObserverPtr& observer)
-{
- _observer = observer;
-}
-
-void
Ice::ConnectionI::Observer::startRead()
{
if(_readWatch.isStarted())
@@ -510,14 +504,6 @@ Ice::ConnectionI::updateObserver()
return;
}
- const ObserverResolverPtr& resolver = _instance->initializationData().observerResolver;
- assert(resolver);
- ConnectionObserverPtr obsv;
- if(_observer.get())
- {
- obsv = _observer->getObserver();
- }
-
ConnectionInfoPtr info;
if(!_info && _state < StateClosed)
{
@@ -527,18 +513,19 @@ Ice::ConnectionI::updateObserver()
_info->adapterName = _adapter ? _adapter->getName() : string();
}
- obsv = resolver->getConnectionObserver(info,
- _endpoint->getInfo(),
- connectionStateMap[static_cast<int>(_state)],
- obsv);
+ const ObserverResolverPtr& resolver = _instance->initializationData().observerResolver;
+ assert(resolver);
+ ConnectionObserverPtr obsv = resolver->getConnectionObserver(info,
+ _endpoint->getInfo(),
+ connectionStateMap[static_cast<int>(_state)],
+ _observer.get() ? _observer->get() : 0);
if(obsv)
{
if(!_observer.get())
{
_observer.reset(new Observer(_readStream, _writeStream));
}
- _observer->setObserver(obsv);
- obsv->attach();
+ _observer->attach(obsv);
}
else
{
@@ -1382,7 +1369,7 @@ Ice::ConnectionI::message(ThreadPoolCurrent& current)
// We can't measure the time to receive the header as it would
// include the wait time.
//
- _observer->getObserver()->receivedBytes(static_cast<int>(headerSize), 0);
+ (*_observer)->receivedBytes(static_cast<int>(headerSize), 0);
}
ptrdiff_t pos = _readStream.i - _readStream.b.begin();
@@ -2207,13 +2194,13 @@ Ice::ConnectionI::setState(State state)
ConnectionState newState = connectionStateMap[static_cast<int>(state)];
if(oldState != newState)
{
- _observer->getObserver()->stateChanged(oldState, newState);
+ (*_observer)->stateChanged(oldState, newState);
}
if(state == StateClosed && _exception.get())
{
if(!dynamic_cast<CloseConnectionException*>(_exception.get()))
{
- _observer->getObserver()->failed(_exception->ice_name());
+ (*_observer)->failed(_exception->ice_name());
}
}
}
@@ -2308,8 +2295,7 @@ Ice::ConnectionI::initialize(SocketOperation operation)
if(obsv)
{
_observer.reset(new Observer(_readStream, _writeStream));
- _observer->setObserver(obsv);
- obsv->attach();
+ _observer->attach(obsv);
}
}