public void Run( IRequest request ) { request.Response = ResponseBuilder; var app = Router.GetApplicationFor( request ); app.Run( request.ToEnvironmentDictionary(), ( status, headers, body ) => { ResponseWriter.Begin( status, headers ); body( ResponseWriter.OnNext, ResponseWriter.OnError, ResponseWriter.OnComplete ); }, error => { } ); }
public void HandleApplication( IRequest request, Stream inputStream, Stream outputStream, Action writeComplete, Action<string> setStatus, Action<IDictionary<string,string>> setHeaders ) { var userApplication = Router.GetApplicationFor( request ); var responseHelper = new ResponseHelper( Configuration ); var writer = new ResponseWriter( outputStream, writeComplete ); responseHelper.Initialize( ( status, headers, setup ) => { setStatus( status ); setHeaders( headers ); setup( writer.OnNext, writer.OnError, writer.OnComplete ); } ); request.Body = ( next, error, complete ) => { inputStream.QueueRead( next, error, complete ); return () => { }; }; request.Response = responseHelper; userApplication.Run( request.ToEnvironmentDictionary(), responseHelper.Respond, Console.WriteLine ); }