public void resolve(string host, int port, Ice.EndpointSelectionType selType, EndpointI endpoint, EndpointI_connectors callback) { // // Try to get the addresses without DNS lookup. If this doesn't work, we queue a resolve // entry and the thread will take care of getting the endpoint addresses. // NetworkProxy networkProxy = _instance.networkProxy(); if (networkProxy == null) { try { List <EndPoint> addrs = Network.getAddresses(host, port, _protocol, selType, _preferIPv6, false); if (addrs.Count > 0) { callback.connectors(endpoint.connectors(addrs, null)); return; } } catch (Ice.LocalException ex) { callback.exception(ex); return; } } _m.Lock(); try { Debug.Assert(!_destroyed); ResolveEntry entry = new ResolveEntry(); entry.host = host; entry.port = port; entry.selType = selType; entry.endpoint = endpoint; entry.callback = callback; Ice.Instrumentation.CommunicatorObserver obsv = _instance.getObserver(); if (obsv != null) { entry.observer = obsv.getEndpointLookupObserver(endpoint); if (entry.observer != null) { entry.observer.attach(); } } _queue.AddLast(entry); _m.Notify(); } finally { _m.Unlock(); } }
public void resolve(string host, int port, Ice.EndpointSelectionType selType, IPEndpointI endpoint, EndpointI_connectors callback) { // // Try to get the addresses without DNS lookup. If this doesn't work, we queue a resolve // entry and the thread will take care of getting the endpoint addresses. // NetworkProxy networkProxy = _instance.networkProxy(); if(networkProxy == null) { try { List<EndPoint> addrs = Network.getAddresses(host, port, _protocol, selType, _preferIPv6, false); if(addrs.Count > 0) { callback.connectors(endpoint.connectors(addrs, null)); return; } } catch(Ice.LocalException ex) { callback.exception(ex); return; } } lock(this) { Debug.Assert(!_destroyed); ResolveEntry entry = new ResolveEntry(); entry.host = host; entry.port = port; entry.selType = selType; entry.endpoint = endpoint; entry.callback = callback; Ice.Instrumentation.CommunicatorObserver obsv = _instance.initializationData().observer; if(obsv != null) { entry.observer = obsv.getEndpointLookupObserver(endpoint); if(entry.observer != null) { entry.observer.attach(); } } _queue.AddLast(entry); System.Threading.Monitor.Pulse(this); } }
public void Resolve(string host, int port, EndpointSelectionType selType, IPEndpoint endpoint, IEndpointConnectors callback) { // // Try to get the addresses without DNS lookup. If this doesn't work, we queue a resolve // entry and the thread will take care of getting the endpoint addresses. // INetworkProxy?networkProxy = NetworkProxy; if (networkProxy == null) { try { List <EndPoint> addrs = Network.GetAddresses(host, port, IPVersion, selType, PreferIPv6, false); if (addrs.Count > 0) { callback.Connectors(endpoint.Connectors(addrs, null)); return; } } catch (LocalException ex) { callback.Exception(ex); return; } } lock (_endpointHostResolverThread) { Debug.Assert(!_endpointHostResolverDestroyed); var entry = new ResolveEntry(host, port, selType, endpoint, callback); Instrumentation.ICommunicatorObserver?obsv = Observer; if (obsv != null) { entry.Observer = obsv.GetEndpointLookupObserver(endpoint); if (entry.Observer != null) { entry.Observer.Attach(); } } _enpointHostResolverQueue.AddLast(entry); Monitor.Pulse(_endpointHostResolverThread); } }