Пример #1
0
        protected virtual RpcSession CreateSession(RpcSessionContext context)
        {
            if (configuration.SessionFactory == null)
            {
                throw new ArgumentNullException(nameof(configuration.SessionFactory));
            }

            return(configuration.SessionFactory.CreateSession(context));
        }
Пример #2
0
        public Task ProcessRequestAsync(HttpContextPipelineHandlerContext context)
        {
            ValidateRequestFormat(context, out var payload);

            var c = RpcSessionContext.Wrap(context);

            c.SaveRequestBody(payload);

            return(Task.FromResult(0));
        }
Пример #3
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);
        }
Пример #4
0
        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}'")));
        }
Пример #5
0
 RpcSession IRpcPeer.CreateSession(RpcSessionContext context)
 {
     return(CreateSession(context));
 }