public void Run() { if (_disposed) { throw new InvalidOperationException("Cannot run disposed server"); } _server = new TcpListener(_host, _port); // Start listening for client requests. _server.Start(); _running = true; Task.Run(async() => { while (_running) { var tcpClient = await _server.AcceptTcpClientAsync(); var cancelTokenSource = new CancellationTokenSource(TimeSpan.FromSeconds(5)); // todo configuration var task = Task.Run(async() => { var source = tcpClient.GetStream(); var lines = await new LineParser().Parse(source, cancelTokenSource.Token); var httpRequest = HttpRequest.Parse(lines); var responseChannel = new HttpResponseChannel(tcpClient); var httpContext = new HttpContext(httpRequest, responseChannel, cancelTokenSource.Token); _handler(httpContext); }, cancelTokenSource.Token); } }); }
public void Run() { if (_disposed) { throw new InvalidOperationException("Cannot run disposed server"); } _server = new TcpListener(_host, _port); // Start listening for client requests. _server.Start(); _running = true; Task.Run(async () => { while (_running) { var tcpClient = await _server.AcceptTcpClientAsync(); var cancelTokenSource = new CancellationTokenSource(TimeSpan.FromSeconds(5)); // todo configuration var task = Task.Run(async () => { var source = tcpClient.GetStream(); var lines = await new LineParser().Parse(source, cancelTokenSource.Token); var httpRequest = HttpRequest.Parse(lines); var responseChannel = new HttpResponseChannel(tcpClient); var httpContext = new HttpContext(httpRequest, responseChannel, cancelTokenSource.Token); _handler(httpContext); }, cancelTokenSource.Token); } }); }
public HttpContext(HttpRequest httpRequest, HttpResponseChannel responseChannel, CancellationToken token) { _httpRequest = httpRequest; _responseChannel = responseChannel; _token = token; }
public HttpContext(HttpRequest httpRequest, HttpResponseChannel responseChannel, CancellationToken token) { _httpRequest = httpRequest; _responseChannel = responseChannel; _token = token; }