public AsyncProcessingNetChannel(Func<IMessageProcessingPipeBuilder, IMessageProcessingPipeBuilder> configureProcesssingPipe, INetNode node,
     ITransportChannel transportChannel, IMessageSerializer serializer, ICoreEvents logger, INetNodeConfig config, IBufferPool bufferPool)
     : base(node, transportChannel, serializer, logger, config, bufferPool)
 {
     _pipeBuilder = configureProcesssingPipe(new MessageProcessingPipeBuilder());
     _processor = _pipeBuilder.Build();
 }
コード例 #2
0
 protected void OnInitialise()
 {
     _pipeBuilder = new MessageProcessingPipeBuilder();
     Fiber = new ReadWriteLockingFiber();
     ConfigurePipe(_pipeBuilder);
     _processor = _pipeBuilder.Build();
 }
コード例 #3
0
 protected void OnInitialise()
 {
     _pipeBuilder = new MessageProcessingPipeBuilder();
     Fiber        = new ReadWriteLockingFiber();
     ConfigurePipe(_pipeBuilder);
     _processor = _pipeBuilder.Build();
 }
 public AsyncProcessingNetChannel(Func <IMessageProcessingPipeBuilder, IMessageProcessingPipeBuilder> configureProcesssingPipe, INetNode node,
                                  ITransportChannel transportChannel, IMessageSerializer serializer, ICoreEvents logger, INetNodeConfig config, IBufferPool bufferPool)
     : base(node, transportChannel, serializer, logger, config, bufferPool)
 {
     _pipeBuilder = configureProcesssingPipe(new MessageProcessingPipeBuilder());
     _processor   = _pipeBuilder.Build();
 }
コード例 #5
0
        public static IMessageProcessingPipeBuilder UseConfigurableDispatcher(this IMessageProcessingPipeBuilder builder, Func <IMessageHandlingConfigBuilder, IMessageHandlingConfigBuilder> configure,
                                                                              bool throwIfUnhandled = true)
        {
            var config = new MessageHandlingConfigBuilder();
            var mp     = new DispatchingMessageProcessor(configure(config).Build(), throwIfUnhandled);

            return(builder.Use(next => context => mp.Process(next, context)));
        }
コード例 #6
0
        public static IMessageProcessingPipeBuilder UseConfigurableClientDispatcher(this IMessageProcessingPipeBuilder builder,
                                                                                    Func <ISimpleMessageHandlingConfigBuilder, ISimpleMessageHandlingConfigBuilder> configure)
        {
            var config = new MessageHandlingConfigBuilder();
            var mp     = new DispatchingMessageProcessor(configure(config).Build(), false);

            return(builder.Use(next => context => mp.Process(next, context)));
        }
コード例 #7
0
        public static IMessageProcessingPipeBuilder UseFiber(this IMessageProcessingPipeBuilder builder, IFiber fiber,
                                                             Func <IMessageProcessingLockConfigBuilder, IMessageProcessingLockConfigBuilder> lockConfigurator = null)
        {
            IMessageProcessingLockConfig lockConfig = lockConfigurator != null?lockConfigurator(new MessageProcessorLockConfig()).Build() : new MessageProcessorLockConfig();

            var mp = new FiberedMessageProcessor(fiber, lockConfig);

            return(builder.Use(next => context => mp.Process(next, context)));
        }
        protected override IMessageProcessingPipeBuilder Configure(IMessageProcessingPipeBuilder builder)
        {
            return builder
                //.UseIdleDisconnect(TimeSpan.FromSeconds(60 * 10), this)
                //.UseInvalidHandshakeDisconnect<JoinRoomS2S>(TimeSpan.FromSeconds(5))
                //.UseFiber(new SimpleFiber(TaskScheduler.Default, 100))
                .UseConfigurableDispatcher(config => config
                    .HandleRequestAsync<JoinRoom, JoinRoomResponse>(OnRoomJoin)
                    .HandleMessageAsync<Say>(OnSay),

                    throwIfUnhandled: false);
        }
コード例 #9
0
        protected override IMessageProcessingPipeBuilder Configure(IMessageProcessingPipeBuilder builder)
        {
            return(builder
                   //.UseIdleDisconnect(TimeSpan.FromSeconds(60 * 10), this)
                   //.UseInvalidHandshakeDisconnect<JoinRoomS2S>(TimeSpan.FromSeconds(5))
                   //.UseFiber(new SimpleFiber(TaskScheduler.Default, 100))
                   .UseConfigurableDispatcher(config => config
                                              .HandleRequestAsync <JoinRoom, JoinRoomResponse>(OnRoomJoin)
                                              .HandleMessageAsync <Say>(OnSay),

                                              throwIfUnhandled: false));
        }
        protected override IMessageProcessingPipeBuilder Configure(IMessageProcessingPipeBuilder builder)
        {
            return builder
                //.UseIdleDisconnect(TimeSpan.FromSeconds(60 * 10), this)
                //.UseInvalidHandshakeDisconnect<JoinRoomS2S>(TimeSpan.FromSeconds(5))
                .UseFiber(new SimpleFiber(TaskScheduler.Default, 10))
                .UseConfigurableDispatcher(config => config
                    .HandleRequest<UseActor, OperationResult>(OnUseActor)
                    .HandleRequestAsync<PingGateway, OperationResult>(OnPingGateway)
                    .HandleRequestAsync<TestStateless, OperationResult>(OnTestStateless)
                    .HandleRequestAsync<TestStateful, OperationResult>(OnTestStateful),

                    throwIfUnhandled: false);
        }
        protected override IMessageProcessingPipeBuilder Configure(IMessageProcessingPipeBuilder builder)
        {
            return(builder
                   //.UseIdleDisconnect(TimeSpan.FromSeconds(60 * 10), this)
                   //.UseInvalidHandshakeDisconnect<JoinRoomS2S>(TimeSpan.FromSeconds(5))
                   .UseFiber(new SimpleFiber(TaskScheduler.Default, 10))
                   .UseConfigurableDispatcher(config => config
                                              .HandleRequest <UseActor, OperationResult>(OnUseActor)
                                              .HandleRequestAsync <PingGateway, OperationResult>(OnPingGateway)
                                              .HandleRequestAsync <TestStateless, OperationResult>(OnTestStateless)
                                              .HandleRequestAsync <TestStateful, OperationResult>(OnTestStateful),

                                              throwIfUnhandled: false));
        }
コード例 #12
0
        public static IMessageProcessingPipeBuilder UseIdleDisconnect(this IMessageProcessingPipeBuilder builder, TimeSpan idleDisconnectTimeout, INetChannel channel)
        {
            var mp = new IdleDisconnectProcessor(idleDisconnectTimeout, channel);

            return(builder.Use(next => context => mp.Process(next, context)));
        }
 public void ReconfigureProcessingPipe(Func <IMessageProcessingPipeBuilder, IMessageProcessingPipeBuilder> reconfigurator)
 {
     _pipeBuilder = reconfigurator(_pipeBuilder);
     _processor   = _pipeBuilder.Build();
 }
 protected virtual IMessageProcessingPipeBuilder Configure(IMessageProcessingPipeBuilder builder)
 {
     throw new NotSupportedException("You should always override Configure in child class if you are using this class as base");
 }
コード例 #15
0
 protected virtual IMessageProcessingPipeBuilder ConfigurePipe(IMessageProcessingPipeBuilder builder)
 {
     return builder
         .UseFiber(Fiber, ConfigureLocks)
         .UseConfigurableDispatcher(ConfigureHandlers);
 }
 public void ReconfigureProcessingPipe(Func<IMessageProcessingPipeBuilder, IMessageProcessingPipeBuilder> reconfigurator)
 {
     _pipeBuilder = reconfigurator(_pipeBuilder);
     _processor = _pipeBuilder.Build();
 }
 protected virtual IMessageProcessingPipeBuilder Configure(IMessageProcessingPipeBuilder builder)
 {
     throw new NotSupportedException("You should always override Configure in child class if you are using this class as base");
 }
コード例 #18
0
 protected virtual IMessageProcessingPipeBuilder ConfigurePipe(IMessageProcessingPipeBuilder builder)
 {
     return(builder
            .UseFiber(Fiber, ConfigureLocks)
            .UseConfigurableDispatcher(ConfigureHandlers));
 }