Beispiel #1
0
        public void Start()
        {
            ThreadPool.QueueUserWorkItem(delegate
            {
                while (!_shutdownInProgress)
                {
                    try
                    {
                        m2net.Request acceptedSocket = _mongrel2Connection.Receive();

                        ThreadPool.QueueUserWorkItem(delegate
                        {
                            if (!_shutdownInProgress)
                            {
                                var conn = new Connection(this, acceptedSocket);

                                //// wait for at least some input
                                //if (conn.WaitForRequestBytes() == 0)
                                //{
                                //    conn.WriteErrorAndClose(400);
                                //    return;
                                //}

                                // find or create host
                                Host host = GetHost();
                                if (host == null)
                                {
                                    conn.WriteErrorAndClose(500);
                                    return;
                                }

                                // process request in worker app domain
                                host.ProcessRequest(conn);
                            }
                        });
                    }
                    catch
                    {
                        Thread.Sleep(100);
                    }
                }
            });
        }
Beispiel #2
0
 public void Close()
 {
     _mongrel2Request = null;
 }
Beispiel #3
0
 public void Close()
 {
     _mongrel2Request = null;
 }
Beispiel #4
0
 internal Connection(Server server, m2net.Request mongrel2Request)
 {
     _server = server;
     _mongrel2Request = mongrel2Request;
 }
Beispiel #5
0
 internal Connection(Server server, m2net.Request mongrel2Request)
 {
     _server          = server;
     _mongrel2Request = mongrel2Request;
 }