public static async Task <StreamReaderAsync> Create(IInputStream inputStream) { var stream = new StreamReaderAsync(inputStream); await inputStream.ReadAsync(stream.buffer, stream.buffer.Capacity, DefaultStreamOptions); return(stream); }
async void ProcessRequestAsync( StreamSocketListener sender, StreamSocketListenerConnectionReceivedEventArgs e) { try { using (var input = await StreamReaderAsync.Create(e.Socket.InputStream)) using (var output = e.Socket.OutputStream) { var response = new HttpResponse(new StreamWriterAsync(output)); var request = await HttpRequest.Create(input); var query = request.ReqLine.Uri.ToLower(); var controller = controllers.FirstOrDefault(kv => query.Contains(kv.Key)).Value ?? defaultController; await controller(request, response); } } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.Message); System.Diagnostics.Debug.WriteLine(ex.StackTrace); // If this is an unknown status it means that the error is fatal and retry will likely fail. //if (SocketError.GetStatus(ex.HResult) == SocketErrorStatus.Unknown) { throw; } } }