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);
        }
示例#2
0
        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);
        }