コード例 #1
0
        public List <Connector> resolve(string host, int port, Ice.EndpointSelectionType selType, EndpointI endpoint)
        {
            //
            // Try to get the addresses without DNS lookup. If this doesn't
            // work, we retry with DNS lookup (and observer).
            //
            NetworkProxy networkProxy = _instance.networkProxy();

            if (networkProxy == null)
            {
                List <EndPoint> addrs = Network.getAddresses(host, port, _protocol, selType, _preferIPv6, false);
                if (addrs.Count > 0)
                {
                    return(endpoint.connectors(addrs, null));
                }
            }

            Ice.Instrumentation.CommunicatorObserver obsv     = _instance.getObserver();
            Ice.Instrumentation.Observer             observer = null;
            if (obsv != null)
            {
                observer = obsv.getEndpointLookupObserver(endpoint);
                if (observer != null)
                {
                    observer.attach();
                }
            }

            List <Connector> connectors = null;

            try
            {
                if (networkProxy != null)
                {
                    networkProxy = networkProxy.resolveHost();
                }

                connectors = endpoint.connectors(Network.getAddresses(host, port, _protocol, selType, _preferIPv6,
                                                                      true),
                                                 networkProxy);
            }
            catch (Ice.LocalException ex)
            {
                if (observer != null)
                {
                    observer.failed(ex.ice_name());
                }
                throw ex;
            }
            finally
            {
                if (observer != null)
                {
                    observer.detach();
                }
            }
            return(connectors);
        }
コード例 #2
0
 add(Ice.ConnectionI connection, Ice.Instrumentation.Observer observer)
 {
     lock (this)
     {
         _connections.Add(connection);
         if (observer != null)
         {
             observer.detach();
         }
     }
 }
コード例 #3
0
ファイル: InstrumentationI.cs プロジェクト: stick/zeroc-ice
 public Ice.Instrumentation.Observer getConnectionEstablishmentObserver(Ice.Endpoint endpt, string connector)
 {
     if (_connects.isEnabled())
     {
         try
         {
             Ice.Instrumentation.Observer del = null;
             if (_delegate != null)
             {
                 del = _delegate.getConnectionEstablishmentObserver(endpt, connector);
             }
             return(_connects.getObserver(new EndpointHelper(endpt, connector), del));
         }
         catch (Exception ex)
         {
             _metrics.getLogger().error("unexpected exception trying to obtain observer:\n" + ex);
         }
     }
     return(null);
 }
コード例 #4
0
 public Ice.Instrumentation.Observer getEndpointLookupObserver(Ice.Endpoint endpt)
 {
     if (_endpointLookups.isEnabled())
     {
         try
         {
             Ice.Instrumentation.Observer del = null;
             if (_delegate != null)
             {
                 del = _delegate.getEndpointLookupObserver(endpt);
             }
             return(_endpointLookups.getObserver(new EndpointHelper(endpt), del));
         }
         catch (System.Exception ex)
         {
             _metrics.getLogger().error("unexpected exception trying to obtain observer:\n" + ex);
         }
     }
     return(null);
 }