public static Middleware Create(RequestHandler handler, RequestMiddleware[] requestModules, ResponseMiddleware[] responseModules) { Middleware m = new Middleware(); m.RequestModules = requestModules; m.ResponseModules = responseModules; m.Handler = handler; return m; }
public async Task contributor_executed() { Env.PipelineData.PipelineStage.CurrentState = PipelineContinuation.Abort; var middleware = new ResponseMiddleware(Contributor(e => Task.FromResult(PipelineContinuation.Continue))); await middleware.Invoke(Env); ContributorCalled.ShouldBeTrue(); Env.PipelineData.PipelineStage.CurrentState.ShouldBe(PipelineContinuation.Abort); }
public async Task middleware_throws() { Env.PipelineData.PipelineStage.CurrentState = PipelineContinuation.Continue; var middleware = new ResponseMiddleware(Contributor(e => Task.FromResult(PipelineContinuation.Abort))); middleware.Invoke(Env).ShouldThrow <PipelineAbortedException>(); ContributorCalled.ShouldBeTrue(); Env.PipelineData.PipelineStage.CurrentState.ShouldBe(PipelineContinuation.Abort); }
public async Task next_middleware_isnt_executed() { Env.PipelineData.PipelineStage.CurrentState = PipelineContinuation.Continue; var middleware = new ResponseMiddleware( Contributor(e => Task.FromResult(PipelineContinuation.RenderNow))); await middleware.Invoke(Env); ContributorCalled.ShouldBeTrue(); NextCalled.ShouldBeFalse(); Env.PipelineData.PipelineStage.CurrentState.ShouldBe(PipelineContinuation.RenderNow); }
/// <summary> /// 启动服务器! /// </summary> /// <param name="message"></param> public async void Run(string message = "服务器运行起来了!") { if (Instance is null) { Instance = this; } else { Logger.Log("只允许同时启动一个服务器!", LogLevel.Warn); return; } // 处理未观察到的异常 TaskScheduler.UnobservedTaskException += (sender, eventArgs) => { eventArgs.SetObserved(); (eventArgs.Exception).Handle(e => { Logger.Log($"Exception type: {e.GetType()}\n{e}", LogLevel.Error); return(true); }); }; // 加载解析器 Parser = new Parser(RequestHandleAsync, ResponseHandleAsync); // 加载中间件 RequestMiddleware = new RequestMiddleware(this); ResponseMiddleware = new ResponseMiddleware(this); // 初始化连接池 与最大连接数保持一致 foreach (var i in Enumerable.Range(0, MaxConnection)) { FreeClients.Enqueue(new Client(this)); } // 初始化房间 foreach (var i in Enumerable.Range(0, MaxRoomNumbers)) { FreeRooms.Enqueue(new Room(i)); } Logger.Log($"初始化了{FreeClients.Count}个对等客户端"); // 设置请求队列的最大值 Listener.Start(MaxConnection); Logger.Log(message); // Test for (int i = 1; i < 3; i++) { var room = GetRoom(); room.Init(GetClient(), i, i * 2, $"TestRoom{i}"); } // // 异步接受客户端连接请求 await AcceptAsync(); }
public void SetUp() { this.context = new DefaultHttpContext(); this.context.Request.Method = HttpMethod; this.context.Request.Path = Path; this.context.Request.QueryString = new QueryString(QueryString); this.context.CreatePlainHttpContext(); var loggerFactory = new NullLoggerFactory(); sut = new ResponseMiddleware(RequestDelegate, loggerFactory); }