예제 #1
0
        public void HandleRequest(ISocketListener socketListener)
        {
            var buffer = new byte[ReadSize];

            socketListener.Receive(buffer, readBytes =>
            {
                if (readBytes.Length <= 0)
                {
                    _logger.Debug("Client disconnected from {0}:{1}", socketListener.RemoteIpAddress, socketListener.RemotePort);
                    socketListener.Dispose();
                    return;
                }

                var requestString = Encoding.UTF8.GetString(readBytes);

                var request = _requestParser.Parse(requestString);

                var handler = _handshakeNegotiator.Negotiate(request, m => socketListener.Send(m, _logger));

                Read(socketListener, buffer, handler);
            }, ex => socketListener.Close(ex.GetErrorResponse(), _logger));
        }
 private void OnError(Exception e, ISocketListener socketListener)
 {
     _logger.Error("Failed to authenticate secure connection. {0}", e);
     var forbidden = new HttpResponse(HttpStatusCode.Forbidden);
     socketListener.Send(forbidden.ToBytes(), socketListener.Dispose, ex => _logger.Error("Failed to response to client: {0}", ex));
 }