bool OutgoingAsyncBase::exceptionImpl(const Exception& ex) { Lock sync(_m); ICE_SET_EXCEPTION_FROM_CLONE(_ex, ex.ice_clone()); if(_childObserver) { _childObserver.failed(ex.ice_id()); _childObserver.detach(); } _cancellationHandler = 0; _observer.failed(ex.ice_id()); #ifndef ICE_CPP11_MAPPING _state |= Done; _m.notifyAll(); #endif bool invoke = handleException(ex); if(!invoke) { _observer.detach(); } return invoke; }
virtual void ice_exception(const Exception& e) { Lock sync(*this); _haveResponse = true; _ex.reset(e.ice_clone()); notify(); }