Ejemplo n.º 1
0
        static IEnumerator<Int32> Server(AsyncEnumerator ae, ServerState server)
        {
            var sleeper = new CountdownTimer();
            var settings = server.settings;
            var ipe = new IPEndPoint(IPAddress.Parse(settings.addressforward), settings.portforward);
            var serverSock = new TcpListener(IPAddress.Parse(settings.addresslisten), settings.portlisten);
            serverSock.Start(20);

            Console.WriteLine("Server started");
            Console.WriteLine("Listening on {0}:{1}", settings.addresslisten, settings.portlisten);
            Console.WriteLine("Forwarding to {0}:{1}", settings.addressforward, settings.portforward);
            while (true)
            {
                serverSock.BeginAcceptTcpClient(ae.End(), null);
                yield return 1;

                TcpClient local = null;
                try
                {
                    local = serverSock.EndAcceptTcpClient(ae.DequeueAsyncResult());
                    local.NoDelay = true;
                    local.LingerState.Enabled = false;
                }
                catch (SocketException)
                {
                    Console.WriteLine("A client failed to connect");
                }

                if(local != null)
                {
                    // handle client
                    var localAe = new AsyncEnumerator();
                    localAe.BeginExecute(ServerConnectRemote(localAe, server, ipe, local), localAe.EndExecute, localAe);
                }
            }
        }
Ejemplo n.º 2
0
        private void scareCrow_Changed(object sender, FileSystemEventArgs e)
        {
            string fileName = e.Name.ToLower();
            using (fileLoadResourceLock.WaitToWrite())
            {
                if (pendingFileReloads.Contains(fileName) || !ContainsFile(fileName))
                    return;

                pendingFileReloads.Add(fileName);
            }

            CountdownTimer timer = new CountdownTimer();
            timer.BeginCountdown(CHANGE_FILE_DELAY, DelayedProcessFileChanged, fileName);
        }
Ejemplo n.º 3
0
 private void scareCrow_Changed(object sender, FileSystemEventArgs e)
 {
     string fileName = e.Name.ToLower();
     using (DirectoryWatcher.fileLoadResourceLock.WaitToWrite())
     {
         if (this.pendingFileReloads.Contains(fileName) || !this.ContainsFile(fileName))
         {
             return;
         }
         this.pendingFileReloads.Add(fileName);
     }
     CountdownTimer timer = new CountdownTimer();
     timer.BeginCountdown(5000, new System.AsyncCallback(this.DelayedProcessFileChanged), fileName);
 }