protected virtual RpcSession CreateSession(RpcSessionContext context) { if (configuration.SessionFactory == null) { throw new ArgumentNullException(nameof(configuration.SessionFactory)); } return(configuration.SessionFactory.CreateSession(context)); }
public Task ProcessRequestAsync(HttpContextPipelineHandlerContext context) { ValidateRequestFormat(context, out var payload); var c = RpcSessionContext.Wrap(context); c.SaveRequestBody(payload); return(Task.FromResult(0)); }
protected virtual RpcSessionContext CreateContext() { RpcSessionContext result = new RpcSessionContext(); result.Connection = this; result.Serializer = configuration.Serializer; result.LogManager = configuration.LogManager; result.TaskScheduler = configuration.TaskScheduler; result.OrderedExecution = configuration.OrderedExecution; result.DefaultExecutionTimeout = configuration.DefaultExecutionTimeout; result.OrderedExecutionMaxQueue = configuration.OrderedExecutionMaxQueue; result.RemotingObjectConfiguration = configuration.RemotingConfiguration; return(result); }
Task IHttpContextPipelineHandler.ProcessRequestAsync(HttpContextPipelineHandlerContext context) { var c = RpcSessionContext.Wrap(context); var skeleton = c.GetRequestBodyAsJsonRpc(); Trace.Assert(skeleton != null, nameof(skeleton) + " != null"); var methodName = skeleton.Method; if (_routes.TryGetValue(methodName, out var handler)) { Debug.Print("Found route: {0}", methodName); handler.Invoke(c); context.BreakPipeline = true; return(Task.FromResult(0)); } Debug.Print("Registered route not found for method '{0}'", methodName); return(Task.FromException(new InvalidRpcRequestException($"Route not found for method '{methodName}'"))); }
RpcSession IRpcPeer.CreateSession(RpcSessionContext context) { return(CreateSession(context)); }