private static INodeEndpointProtocolServer WaitForServerBase( this INodeEndpointProtocolServerListener serverListener, string address, INodeEndpoint endpoint, int timeout ) { if (!serverListener.Connected) { serverListener.Connect(address, endpoint.EndpointName); } INodeEndpointProtocolServer server = serverListener.Listen(timeout); if (server != null) { INodeEndpointProtocolRequestListener endpointListener = new ProtocolEnabledRequestListener(endpoint); server.AddListener(endpointListener); } return(server); }
private static void PortListeningThreadProc(int port, INodeEndpointProtocolServerListener serverListener) { List <INodeEndpointProtocolServer> servers = new List <INodeEndpointProtocolServer>(); try { while (true) { if (!serverListener.Connected) { serverListener.Connect(port.ToString(), TcpShareProviderServiceConfiguration.EndpointName); } if (!serverListener.Connected) { lock (portListeningThreads) { serverListener.Disconnect(); portListeningThreads.Remove(port); break; } } INodeEndpointProtocolServer server = serverListener.Listen(NodeEndpointProtocolFactoryExtension.DefaultTimeout); if (server != null) { TcpShareProviderServiceRedirector redirector = new TcpShareProviderServiceRedirector(port, outFactory, server); server.AddListener(redirector); server.BeginListen(); servers.Add(server); } ClearServices(servers, true); } } catch (ThreadAbortException) { } ClearServices(servers, false); }