Esempio n. 1
0
 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 );
        }