diff options
author | Marc Laukien <marc@zeroc.com> | 2002-04-13 14:20:11 +0000 |
---|---|---|
committer | Marc Laukien <marc@zeroc.com> | 2002-04-13 14:20:11 +0000 |
commit | 14eb5a90dadb90493192b35dcc241068a9c99550 (patch) | |
tree | b565a551fbfa6163de72015135b424c531a40930 /cpp/src/Ice/Connection.cpp | |
parent | brought getLocalHost() back (diff) | |
download | ice-14eb5a90dadb90493192b35dcc241068a9c99550.tar.bz2 ice-14eb5a90dadb90493192b35dcc241068a9c99550.tar.xz ice-14eb5a90dadb90493192b35dcc241068a9c99550.zip |
fixes for the thread pool
Diffstat (limited to 'cpp/src/Ice/Connection.cpp')
-rw-r--r-- | cpp/src/Ice/Connection.cpp | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/cpp/src/Ice/Connection.cpp b/cpp/src/Ice/Connection.cpp index 01ecb5fe6e5..81e43236ce0 100644 --- a/cpp/src/Ice/Connection.cpp +++ b/cpp/src/Ice/Connection.cpp @@ -251,6 +251,17 @@ void IceInternal::Connection::setAdapter(const ObjectAdapterPtr& adapter) { IceUtil::RecMutex::Lock sync(*this); + + if (adapter && !_adapter) + { + _threadPool->clientIsNowServer(); + } + + if (!adapter && _adapter) + { + _threadPool->serverIsNowClient(); + } + _adapter = adapter; } @@ -538,11 +549,14 @@ IceInternal::Connection::finished() { IceUtil::RecMutex::Lock sync(*this); - _threadPool->promoteFollower(); + assert(_state == StateClosed || _state == StateHolding); - assert(_state == StateClosed); + _threadPool->promoteFollower(); - _transceiver->close(); + if (_state == StateClosed) + { + _transceiver->close(); + } } void @@ -699,7 +713,7 @@ IceInternal::Connection::setState(State state) { return; } - _threadPool->unregister(_transceiver->fd(), false); + _threadPool->unregister(_transceiver->fd()); break; } @@ -730,7 +744,7 @@ IceInternal::Connection::setState(State state) // _threadPool->_register(_transceiver->fd(), this); } - _threadPool->unregister(_transceiver->fd(), true); + _threadPool->unregister(_transceiver->fd()); break; } } |