コード例 #1
0
ファイル: OutgoingAsync.cpp プロジェクト: pedia/zeroc-ice
 virtual bool completed(const Exception& ex)
 {
     _childObserver.failed(ex.ice_name());
     _childObserver.detach();
     _outAsync->check(false);
     return false;
 }
コード例 #2
0
ファイル: OutgoingAsync.cpp プロジェクト: pedia/zeroc-ice
bool
ProxyOutgoingAsyncBase::completed(const Exception& exc)
{
    if(_childObserver)
    {
        _childObserver.failed(exc.ice_name());
        _childObserver.detach();
    }

    _cachedConnection = 0;
    if(_proxy->__reference()->getInvocationTimeout() == -2)
    {
        _instance->timer()->cancel(this);
    }

    //
    // NOTE: at this point, synchronization isn't needed, no other threads should be
    // calling on the callback.
    //
    try
    {
        //
        // It's important to let the retry queue do the retry even if
        // the retry interval is 0. This method can be called with the
        // connection locked so we can't just retry here.
        //
        _instance->retryQueue()->add(this, handleException(exc));
        return false;
    }
    catch(const Exception& ex)
    {
        return finished(ex); // No retries, we're done
    }
}
コード例 #3
0
ファイル: OutgoingAsync.cpp プロジェクト: pedia/zeroc-ice
bool
OutgoingAsyncBase::finished(const Exception& ex)
{
    if(_childObserver)
    {
        _childObserver.failed(ex.ice_name());
        _childObserver.detach();
    }
    return AsyncResult::finished(ex);
}