public void Send(IResponseHandlerResult response, IRemoteRequest request, ulong sessiongId = 0) { this.Send(response, new CurrentRequest() { Id = 0, Request = request }, sessiongId); }
public async Task TestExecute() { IRemoteRequest savedRequest = null; var mock = new Mock <IRemoteRequestProcessor>(); mock.Setup(processor => processor.ExecuteAsync(It.IsAny <IRemoteRequest>())) .Callback <IRemoteRequest>(request => savedRequest = request) .Returns(Task.CompletedTask); var fooClient = new FooClient(mock.Object); await fooClient.ExecuteStringAsync("10", "20"); Assert.NotNull(savedRequest); Assert.Equal("GET", savedRequest.Descriptor.Method); Assert.Equal("foo/{value}", savedRequest.Descriptor.UriTemplate); Assert.Equal(OperationWebMessageFormat.Json, savedRequest.Descriptor.RequestFormat); Assert.Equal(OperationWebMessageFormat.Xml, savedRequest.Descriptor.ResponseFormat); Assert.Equal(1, savedRequest.QueryStringParameters.Count); Assert.Equal(1, savedRequest.BodyParameters.Count); var queryParameter = savedRequest.QueryStringParameters.Single(); var bodyParameter = savedRequest.BodyParameters.Single(); Assert.Equal("value", queryParameter.Key); Assert.Equal("10", queryParameter.Value); Assert.Equal("bar", bodyParameter.Key); Assert.Equal("20", bodyParameter.Value); }
private void RequestHandler_OnMessageReceived(object sender, IRemoteRequest request, OnReceivedSocketEventArgs e2) { var reqs = request as Request; if (reqs == null) { return; } if (request.CommandType.IsEquals(ConfigFileCommand.Push)) { if (this.sessions.ContainsKey(e2.Connection.Id)) { return; } var fileName = reqs.Query == null ? null : reqs.Query["file"]; if (fileName == null) { return; } this.sessions[e2.Connection.Id] = new KeyValuePair <string, Encoding>(fileName, reqs.Encoding); return; } }
/// <summary> /// 处理请求 /// </summary> /// <param name="request"></param> /// <returns></returns> public TaskCompletionSource <IRemoteResponse> Excute(IRemoteRequest request) { var current = new CurrentRequest(request, () => this.NextId); var task = new TaskCompletionSource <IRemoteResponse>(TaskCreationOptions.None); this.all.TryAdd(current.Id, new CurrentRequestTaskCompletion() { Request = current, Response = task }); this.client.Push(this.remoteProtocol.FromRequest(current)); return(task); }
/// <summary> /// /// </summary> /// <param name="request"></param> /// <param name="idgenera"></param> public CurrentRequest(IRemoteRequest request, Func <ulong> idgenera) { this.Request = request; this.Id = idgenera(); }
/// <summary> /// /// </summary> /// <param name="context"></param> /// <param name="request"></param> /// <returns></returns> IResponseHandlerResult IResponseHandler.Excute(IResponseHandlerContext context, IRemoteRequest request) { var reqs = request as Request; var resp = new ResponseResult() { Query = reqs.Query, Headers = reqs.Headers, Form = reqs.Form, }; if (request.CommandType.IsEquals(ConfigFileCommand.Test)) { return(resp); } var fileName = reqs.Query == null ? null : reqs.Query["file"]; if (fileName == null) { return(resp); } var builder = this.configurationWatcher[fileName]; if (builder == null) { return(resp); } resp.Query["encoding"] = builder.File.Encoding.BodyName; resp.Body = new MemoryStream(reqs.Encoding.GetBytes(builder.Content)); return(resp); }