Esempio n. 1
0
 public override void finished(Ice.ObjectPrx proxy)
 {
     if (proxy != null || _proxies.Count == 0)
     {
         sendResponse(proxy);
     }
     else if (_proxies.Count == 1)
     {
         sendResponse(_proxies.First());
     }
     else
     {
         List <Ice.Endpoint> endpoints = new List <Ice.Endpoint>();
         Ice.ObjectPrx       result    = null;
         foreach (Ice.ObjectPrx prx in _proxies)
         {
             if (result == null)
             {
                 result = prx;
             }
             endpoints.AddRange(prx.ice_getEndpoints());
         }
         sendResponse(result.ice_endpoints(endpoints.ToArray()));
     }
 }
Esempio n. 2
0
        internal Ice.ObjectPrx findAdapter(string adapterId, out bool isReplicaGroup)
        {
            lock (this)
            {
                Ice.ObjectPrx result = null;
                if (_adapters.TryGetValue(adapterId, out result))
                {
                    isReplicaGroup = false;
                    return(result);
                }

                HashSet <string> adapterIds;
                if (_replicaGroups.TryGetValue(adapterId, out adapterIds))
                {
                    List <Ice.Endpoint> endpoints = new List <Ice.Endpoint>();
                    foreach (string a in adapterIds)
                    {
                        Ice.ObjectPrx proxy;
                        if (!_adapters.TryGetValue(a, out proxy))
                        {
                            continue; // TODO: Inconsistency
                        }

                        if (result == null)
                        {
                            result = proxy;
                        }

                        endpoints.AddRange(proxy.ice_getEndpoints());
                    }

                    if (result != null)
                    {
                        isReplicaGroup = true;
                        return(result.ice_endpoints(endpoints.ToArray()));
                    }
                }

                isReplicaGroup = false;
                return(null);
            }
        }