示例#1
0
        /// <summary>
        /// Main loop for handling requests on a single proxy connection
        /// </summary>
        public void Run()
        {
            Status = "Running";
            try {
                while (true) {

                    if (active == false)
                        break;

                    Status = "Waiting for new request";

                    //Waiting for new request
                    if (GotNewRequest (ClientSocket) == false)
                        break;

                    bool keepAlive = RunRequest ();

                    //Flush the TCP connection, temporarily disable Nagle's algorithm
                    if (keepAlive) {
                        ClientSocket.NoDelay = true;
                        ClientSocket.NoDelay = false;
                    }

                    served += 1;
                    if (keepAlive == false)
                        break;

                    //Cleanup remaining resources
                    request.Dispose ();
                    request = null;
                }
            } finally {
                active = false;
                proxy.Remove (this);
                request.NullSafeDispose ();
                ClientStream.Close ();
            }
        }