diff options
author | Marc Laukien <marc@zeroc.com> | 2001-12-15 20:19:20 +0000 |
---|---|---|
committer | Marc Laukien <marc@zeroc.com> | 2001-12-15 20:19:20 +0000 |
commit | 8ee670953a8257e73fbbab7f1a1be2cb7237c073 (patch) | |
tree | 46394e6fe592fdecb187fa8184d70b6157209e36 /cpp/src/Ice/Connection.cpp | |
parent | fixes (diff) | |
download | ice-8ee670953a8257e73fbbab7f1a1be2cb7237c073.tar.bz2 ice-8ee670953a8257e73fbbab7f1a1be2cb7237c073.tar.xz ice-8ee670953a8257e73fbbab7f1a1be2cb7237c073.zip |
fixes
Diffstat (limited to 'cpp/src/Ice/Connection.cpp')
-rw-r--r-- | cpp/src/Ice/Connection.cpp | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/cpp/src/Ice/Connection.cpp b/cpp/src/Ice/Connection.cpp index 39963b7b912..d83b9ddc343 100644 --- a/cpp/src/Ice/Connection.cpp +++ b/cpp/src/Ice/Connection.cpp @@ -54,6 +54,27 @@ IceInternal::Connection::~Connection() assert(_state == StateClosed); } +void +IceInternal::Connection::destroy(DestructionReason reason) +{ + JTCSyncT<JTCRecursiveMutex> sync(*this); + + switch (reason) + { + case ObjectAdapterDeactivated: + { + setState(StateClosing, ObjectAdapterDeactivatedException(__FILE__, __LINE__)); + break; + } + + case CommunicatorDestroyed: + { + setState(StateClosing, CommunicatorDestroyedException(__FILE__, __LINE__)); + break; + } + } +} + bool IceInternal::Connection::destroyed() const { @@ -416,7 +437,7 @@ IceInternal::Connection::message(BasicStream& stream) { in.invoke(); } - catch (const LocalException& ex) + catch (const Exception& ex) { JTCSyncT<JTCRecursiveMutex> sync(*this); warning(ex); @@ -535,7 +556,8 @@ IceInternal::Connection::setState(State state, const LocalException& ex) // if (!dynamic_cast<const CloseConnectionException*>(&ex) && !dynamic_cast<const CommunicatorDestroyedException*>(&ex) && - !dynamic_cast<const ObjectAdapterDeactivatedException*>(&ex)) + !dynamic_cast<const ObjectAdapterDeactivatedException*>(&ex) && + !(dynamic_cast<const ConnectionLostException*>(&ex) && _state == StateClosing)); { warning(ex); } @@ -642,7 +664,7 @@ IceInternal::Connection::closeConnection() } void -IceInternal::Connection::warning(const LocalException& ex) const +IceInternal::Connection::warning(const Exception& ex) const { if (_warn) { |