コード例 #1
0
ファイル: LookupI.cs プロジェクト: chuanqingli/ice
        internal void adapterRequestException(AdapterRequest request, Exception ex)
        {
            lock (this)
            {
                AdapterRequest r;
                if (!_adapterRequests.TryGetValue(request.getId(), out r) || r != request)
                {
                    return;
                }

                if (request.exception())
                {
                    if (_warnOnce)
                    {
                        StringBuilder s = new StringBuilder();
                        s.Append("failed to lookup adapter `");
                        s.Append(request.getId());
                        s.Append("' with lookup proxy `");
                        s.Append(_lookup);
                        s.Append("':\n");
                        s.Append(ex.ToString());
                        _lookup.ice_getCommunicator().getLogger().warning(s.ToString());
                        _warnOnce = false;
                    }
                    _timer.cancel(request);
                    _adapterRequests.Remove(request.getId());
                }
            }
        }
コード例 #2
0
ファイル: LookupI.cs プロジェクト: chuanqingli/ice
        internal void adapterRequestTimedOut(AdapterRequest request)
        {
            lock (this)
            {
                AdapterRequest r;
                if (!_adapterRequests.TryGetValue(request.getId(), out r) || r != request)
                {
                    return;
                }

                if (request.retry())
                {
                    try
                    {
                        request.invoke(_domainId, _lookups);
                        _timer.schedule(request, _timeout);
                        return;
                    }
                    catch (Ice.LocalException)
                    {
                    }
                }

                request.finished(null);
                _adapterRequests.Remove(request.getId());
                _timer.cancel(request);
            }
        }
コード例 #3
0
ファイル: LookupI.cs プロジェクト: chuanqingli/ice
        internal Task <Ice.ObjectPrx> findAdapter(string adapterId)
        {
            lock (this)
            {
                AdapterRequest request;
                if (!_adapterRequests.TryGetValue(adapterId, out request))
                {
                    request = new AdapterRequest(this, adapterId, _retryCount);
                    _adapterRequests.Add(adapterId, request);
                }

                var task = new TaskCompletionSource <Ice.ObjectPrx>();
                if (request.addCallback(task))
                {
                    try
                    {
                        request.invoke(_domainId, _lookups);
                        _timer.schedule(request, _timeout);
                    }
                    catch (Ice.LocalException)
                    {
                        request.finished(null);
                        _adapterRequests.Remove(adapterId);
                    }
                }
                return(task.Task);
            }
        }
コード例 #4
0
        internal void findAdapter(string adapterId, Action <Ice.ObjectPrx> response)
        {
            lock (this)
            {
                AdapterRequest request;
                if (!_adapterRequests.TryGetValue(adapterId, out request))
                {
                    request = new AdapterRequest(this, adapterId, _retryCount);
                    _adapterRequests.Add(adapterId, request);
                }

                if (request.addCallback(response))
                {
                    try
                    {
                        _lookup.findAdapterByIdAsync(_domainId, adapterId, _lookupReply);
                        _timer.schedule(request, _timeout);
                    }
                    catch (Ice.LocalException)
                    {
                        request.finished(null);
                        _adapterRequests.Remove(adapterId);
                    }
                }
            }
        }
コード例 #5
0
ファイル: LookupI.cs プロジェクト: yiqideren/ice
 internal void findAdapter(Ice.AMD_Locator_findAdapterById cb, string adapterId)
 {
     lock (this)
     {
         AdapterRequest request;
         if (!_adapterRequests.TryGetValue(adapterId, out request))
         {
             request = new AdapterRequest(this, adapterId, _retryCount);
             _adapterRequests.Add(adapterId, request);
         }
         if (request.addCallback(cb))
         {
             try
             {
                 _lookup.begin_findAdapterById(_domainId, adapterId, _lookupReply);
                 _timer.schedule(request, _timeout);
             }
             catch (Ice.LocalException)
             {
                 request.finished(null);
                 _adapterRequests.Remove(adapterId);
             }
         }
     }
 }
コード例 #6
0
ファイル: LookupI.cs プロジェクト: zxh1986123/ice
        internal void adapterRequestTimedOut(AdapterRequest request)
        {
            lock (this)
            {
                AdapterRequest r;
                if (!_adapterRequests.TryGetValue(request.getId(), out r) || r != request)
                {
                    return;
                }

                if (request.retry())
                {
                    try
                    {
                        foreach (var l in _lookup)
                        {
                            l.Key.findAdapterByIdAsync(_domainId, request.getId(), l.Value);
                        }
                        _timer.schedule(request, _timeout);
                        return;
                    }
                    catch (Ice.LocalException)
                    {
                    }
                }

                request.finished(null);
                _adapterRequests.Remove(request.getId());
                _timer.cancel(request);
            }
        }