Cassini.Connection.WaitForRequestBytes C# (CSharp) Метод

WaitForRequestBytes() публичный Метод

public WaitForRequestBytes ( ) : int
Результат int
        public int WaitForRequestBytes()
        {
            int availBytes = 0;

            try {
                if (_socket.Available == 0) {
                    // poll until there is data
                    _socket.Poll(100000 /* 100ms */, SelectMode.SelectRead);
                    if (_socket.Available == 0 && _socket.Connected) {
                        _socket.Poll(30000000 /* 30sec */, SelectMode.SelectRead);
                    }
                }

                availBytes = _socket.Available;
            }
            catch {
            }

            return availBytes;
        }

Usage Example

Пример #1
0
        public void Start()
        {
            _IsShutdownInProgress = false;

            try
            {
                _Socket = CreateSocketBindAndListen(AddressFamily.InterNetwork, IPAddress.Loopback, Website.Port);
            }
            catch (Exception e)
            {
                _Socket = CreateSocketBindAndListen(AddressFamily.InterNetworkV6, IPAddress.IPv6Loopback, Website.Port);
            }

            Task.Factory.StartNew(() =>
            {
                while (!_IsShutdownInProgress)
                {
                    try
                    {
                        var acceptedSocket = _Socket.Accept();

                        Task.Factory.StartNew(() =>
                        {
                            if (!_IsShutdownInProgress)
                            {
                                var conn = new Connection(this, acceptedSocket);

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

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

                                // process request in worker app domain
                                host.ProcessRequest(conn);
                            }
                        });
                    }
                    catch
                    {
                        Thread.Sleep(100);
                    }
                }
            });
        }
All Usage Examples Of Cassini.Connection::WaitForRequestBytes