Beispiel #1
0
        public SocketRequestResponseChannelTest(ITestOutputHelper output)
        {
            var converter = new Converter(output);

            Console.SetOut(converter);

            _world = World.StartWithDefaults("test-request-response-channel");

            _buffer = new MemoryStream(1024);
            var logger   = ConsoleLogger.TestInstance();
            var provider = new TestRequestChannelConsumerProvider();

            _serverConsumer = (TestRequestChannelConsumer)provider.Consumer;

            _server = ServerRequestResponseChannelFactory.Start(
                _world.Stage,
                provider,
                _testPort,
                "test-server",
                1,
                PoolSize,
                10240,
                10L);

            _clientConsumer = new TestResponseChannelConsumer();

            _client = new BasicClientRequestResponseChannel(Address.From(Host.Of("localhost"), _testPort, AddressType.None),
                                                            _clientConsumer, PoolSize, 10240, logger);

            ++_testPort;
        }
Beispiel #2
0
        public BaseServerChannelTest(ITestOutputHelper output, int poolSize)
        {
            _output   = output;
            _poolSize = poolSize;
            var converter = new Converter(output);

            Console.SetOut(converter);

            _world = World.StartWithDefaults("test-request-response-channel");

            _buffer = new MemoryStream(1024);
            var logger   = ConsoleLogger.TestInstance();
            var provider = new TestRequestChannelConsumerProvider();

            _serverConsumer = (TestRequestChannelConsumer)provider.Consumer;

            var testPort = TestPort.IncrementAndGet();

            _server = GetServer(
                _world.Stage,
                provider,
                "test-server",
                testPort,
                1,
                _poolSize,
                10240,
                10L,
                1L);

            _clientConsumer = new TestResponseChannelConsumer();

            _client = GetClient(_clientConsumer, _poolSize, 10240, testPort, logger);
        }
        public ServerActor(
            Resources resources,
            Filters filters,
            int port,
            Configuration.SizingConf sizing,
            Configuration.TimingConf timing,
            string channelMailboxTypeName)
        {
            var start = DateExtensions.GetCurrentMillis();

            _filters             = filters;
            _dispatcherPoolIndex = 0;
            _world = Stage.World;
            _requestsMissingContent = new Dictionary <string, RequestResponseHttpContext>();
            _maxMessageSize         = sizing.MaxMessageSize;

            try
            {
                _responseBufferPool = new ConsumerByteBufferPool(
                    ElasticResourcePool <IConsumerByteBuffer, Nothing> .Config.Of(sizing.MaxBufferPoolSize),
                    sizing.MaxMessageSize);

                _dispatcherPool = new IDispatcher[sizing.DispatcherPoolSize];

                for (int idx = 0; idx < sizing.DispatcherPoolSize; ++idx)
                {
                    _dispatcherPool[idx] = Dispatcher.StartWith(Stage, resources);
                }

                _channel =
                    ServerRequestResponseChannelFactory.Start(
                        Stage,
                        Stage.World.AddressFactory.WithHighId(ChannelName),
                        channelMailboxTypeName,
                        this,
                        port,
                        ChannelName,
                        sizing.ProcessorPoolSize,
                        sizing.MaxBufferPoolSize,
                        sizing.MaxMessageSize,
                        timing.ProbeInterval,
                        timing.ProbeTimeout);

                var end = DateExtensions.GetCurrentMillis();

                Logger.Info($"Server {ServerName} is listening on port: {port} started in {end - start} ms");

                _requestMissingContentTimeout = timing.RequestMissingContentTimeout;

                LogResourceMappings(resources);
            }
            catch (Exception e)
            {
                var message = $"Failed to start server because: {e.Message}";
                Logger.Error(message, e);
                throw new InvalidOperationException(message);
            }
        }