コード例 #1
0
        private IApiOperator CreateLocalOperator(
            Func <AddressFamily, SocketType, ProtocolType, ISocket> socketFactory,
            IRecorder recorder,
            IRemoteTraceMonitorСonsistent remoteTraceMonitor = default,
            string address = "111.111.111.111:11111")
        {
            if (remoteTraceMonitor == default)
            {
                remoteTraceMonitor = Mock.Create <IRemoteTraceMonitorСonsistent>();
            }

            // MonitoredRemoteOperator
            var instructionSenderFactory       = new TestInstructionSenderFactory(socketFactory, recorder);
            var monitoredRemoteOperatorFactory = new BaseMonitoredRemoteOperatorFactory(
                instructionSenderFactory,
                remoteTraceMonitor, recorder);

            // RemoteApiMap
            var instructionReceiverFactory   = new TestInstructionReceiverFactory(socketFactory, recorder);
            var traceableRemoteApiMapFactory = new BaseTraceableRemoteApiMapFactory(
                instructionReceiverFactory,
                _applicationRecorder);

            var apiOperatorFactory = new ApiOperatorFactory(monitoredRemoteOperatorFactory, traceableRemoteApiMapFactory, _applicationRecorder);

            return(apiOperatorFactory.Create(address));
        }
コード例 #2
0
        public Task Run()
        {
            _mainApplicationTask = new TaskCompletionSource <bool>();

            // System recorder
            var systemRecorder = new SystemRecorder();

            _systemMessageDispatcher = systemRecorder;
            _systemMessageDispatcher.InterruptedWithMessage += SystemInterruptedHandler;

            // Application recorder
            _applicationRecorder = new ApplicationRecorder(systemRecorder, new MessagesCache(10));

            // Remote trace monitor
            var remoteTraceMonitor = new RemoteTraceMonitor(new ConsoleAbstraction()
                                                            , 4,
                                                            systemRecorder,
                                                            systemRecorder);

            remoteTraceMonitor.Start();

            var remoteTraceMonitorСonsistent = new RemoteTraceMonitorСonsistent(remoteTraceMonitor);

            var remoteOperatorFactory        = new BaseMonitoredRemoteOperatorFactory(new BaseInstructionSenderFactory(_applicationRecorder), remoteTraceMonitorСonsistent, _applicationRecorder);
            var traceableRemoteApiMapFactory = new BaseTraceableRemoteApiMapFactory(new BaseInstructionReceiverFactory(_applicationRecorder), _applicationRecorder);

            var apiOperatorFactory = new ApiOperatorFactory(remoteOperatorFactory, traceableRemoteApiMapFactory, _applicationRecorder);

            apiOperatorFactory.Create("127.0.0.1:8081");

            return(_mainApplicationTask.Task);
        }
コード例 #3
0
        internal static TraceableRemoteApiMapWrapperRealSockets ArrangeRemoteApiMapTestWrapperWithRealSockets(
            string address)
        {
            var recorder             = new ApplicationCacheRecorder();
            var sockets              = new List <SocketTesterWrapper>();
            var socketFactoryCounter = 0;
            var apiMapWrapper        = default(TraceableRemoteApiMapWrapperRealSockets);

            void OnAccepted(SocketTesterWrapper wrapper)
            {
                sockets.Add(wrapper);
                apiMapWrapper.SocketAcceptedHandler?.Invoke(wrapper);
            }

            Func <AddressFamily, SocketType, ProtocolType, ISocket> socketFactory = (family, type, arg3) =>
            {
                socketFactoryCounter++;
                var socket = new SocketTesterWrapper(family, type, arg3, $"{socketFactoryCounter}");
                socket.Accepted += OnAccepted;
                sockets.Add(socket);
                return(socket);
            };

            // RemoteApiMap
            var instructionReceiverFactory   = new TestInstructionReceiverFactory(socketFactory, recorder);
            var traceableRemoteApiMapFactory = new BaseTraceableRemoteApiMapFactory(
                instructionReceiverFactory,
                recorder);

            var apiMap = traceableRemoteApiMapFactory.Create(address);

            apiMapWrapper = new TraceableRemoteApiMapWrapperRealSockets(sockets, apiMap, recorder);

            return(apiMapWrapper);
        }
コード例 #4
0
        private (ITraceableRemoteApiMap, Dictionary <string, SocketTester>) ArrangeRemoteApiMapWithSockets(
            IApplicationRecorder applicationRecorder,
            IRecorder recorder,
            SocketTester socketConnecter,
            string address)
        {
            var sockets        = new Dictionary <string, SocketTester>();
            var socketListener = new SocketTester("listener");
            var socketAccepted = new SocketTester("accepted");
            var socketFactory  = ArrangeSocketFactoryTraceableRemoteApiMap(socketConnecter, socketListener, socketAccepted, isRemote: true);

            // RemoteApiMap
            var instructionReceiverFactory   = new TestInstructionReceiverFactory(socketFactory, recorder);
            var traceableRemoteApiMapFactory = new BaseTraceableRemoteApiMapFactory(
                instructionReceiverFactory,
                applicationRecorder);

            sockets.Add("connecter", socketConnecter);
            sockets.Add("listener", socketListener);
            sockets.Add("accepted", socketAccepted);

            var apiMap = traceableRemoteApiMapFactory.Create(address);

            return(apiMap, sockets);
        }
コード例 #5
0
        public IServiceRunner Build(Func <ITraceableRemoteApiMap, IApplicationRecorder, IRunnable> setupCore)
        {
            var configuration = new ConfigurationBuilder()
                                .AddJsonFile("appsettings.json")
                                .Build();

            // System recorder
            var systemRecorder = new SystemRecorder();

            systemRecorder.InterruptedWithMessage += SystemInterruptedHandler;

            // Application recorder
            var applicationRecorder = new ApplicationRecorder(
                systemRecorder,
                new MessagesCache(Int32.Parse(configuration["MESSAGE_CACHE"])));

            var traceableRemoteApiMapFactory = new BaseTraceableRemoteApiMapFactory(new BaseInstructionReceiverFactory(applicationRecorder), applicationRecorder);
            var map = traceableRemoteApiMapFactory.Create(configuration["IP_ADDRESS"]);

            _core = setupCore?.Invoke(map, applicationRecorder);

            return(this);
        }
コード例 #6
0
        public Task Run()
        {
            _mainApplicationTask = new TaskCompletionSource <bool>();

            var configuration = new ConfigurationBuilder()
                                .AddJsonFile("appsettings.json")
                                .Build();

            // System recorder
            var systemRecorder = new SystemRecorder();

            _systemMessageDispatcher = systemRecorder;
            _systemMessageDispatcher.InterruptedWithMessage += SystemInterruptedHandler;

            // Application recorder
            _applicationRecorder = new ApplicationRecorder(systemRecorder,
                                                           new MessagesCache(Int32.Parse(configuration["MESSAGE_CACHE"])));

            // Remote trace monitor
            var remoteTraceMonitor = new RemoteTraceMonitor(new ConsoleAbstraction()
                                                            , Int32.Parse(configuration["MONITOR_LINES"]),
                                                            bool.Parse(configuration["SHOW_DEBUG_MESSAGES"]),
                                                            systemRecorder,
                                                            systemRecorder);

            remoteTraceMonitor.Start();
            var remoteTraceMonitorСonsistent = new RemoteTraceMonitorСonsistent(remoteTraceMonitor);

            var remoteOperatorFactory        = new BaseMonitoredRemoteOperatorFactory(new BaseInstructionSenderFactory(_applicationRecorder), remoteTraceMonitorСonsistent, _applicationRecorder, _applicationRecorder);
            var traceableRemoteApiMapFactory = new BaseTraceableRemoteApiMapFactory(new BaseInstructionReceiverFactory(_applicationRecorder), _applicationRecorder);

            var apiOperatorFactory = new ApiOperatorFactory(remoteOperatorFactory, traceableRemoteApiMapFactory, _applicationRecorder);

            apiOperatorFactory.Create(configuration["IP_ADDRESS"]);

            return(_mainApplicationTask.Task);
        }