コード例 #1
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);
        }
コード例 #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
 public BaseTraceableRemoteApiMapFactory(
     IInstructionReceiverFactory instructionReceiverFactory,
     IApplicationRecorder recorder)
 {
     _instructionReceiverFactory = instructionReceiverFactory;
     _recorder = recorder;
 }
コード例 #4
0
 public RemoteApiIntegrationTests(ITestOutputHelper testOutputHelper)
 {
     _output              = testOutputHelper;
     _cacheRecorder       = new CacheRecorder();
     _recorder            = Mock.Create <IRecorder>();
     _applicationRecorder = Mock.Create <IApplicationRecorder>();
     _systemRecorder      = Mock.Create <ISystemRecorder>();
 }
コード例 #5
0
 public ApiOperatorFactory(
     IMonitoredRemoteOperatorFactory monitoredRemoteOperatorFactory,
     ITraceableRemoteApiMapFactory traceableRemoteApiMapFactory,
     IApplicationRecorder applicationRecorder)
 {
     _traceableRemoteApiMapFactory   = traceableRemoteApiMapFactory;
     _monitoredRemoteOperatorFactory = monitoredRemoteOperatorFactory;
     _applicationRecorder            = applicationRecorder;
 }
コード例 #6
0
        public RemoteRecordsSender(
            IСonsistentMessageSender consistentMessageSender,
            IApplicationRecorder applicationRecorder,
            IRecorder recorder)
        {
            _consistentMessageSender = consistentMessageSender;
            _applicationRecorder     = applicationRecorder;
            _recorder = recorder;

            _applicationRecorder.RecordReceived += RecordReceivedHandler;
        }
コード例 #7
0
 public BaseMonitoredRemoteOperatorFactory(
     IInstructionSenderFactory instructionSenderFactory,
     IRemoteTraceMonitorСonsistent remoteTraceMonitor,
     IApplicationRecorder applicationRecorder,
     IRecorder recorder)
 {
     _instructionSenderFactory = instructionSenderFactory;
     _remoteTraceMonitor       = remoteTraceMonitor;
     _applicationRecorder      = applicationRecorder;
     _recorder = recorder;
 }
コード例 #8
0
        public ApiOperator(
            IMonitoredRemoteOperator monitoredRemoteOperator,
            ITraceableRemoteApiMap traceableRemoteApiMap,
            IApplicationRecorder applicationRecorder)
        {
            _traceableRemoteApiMap   = traceableRemoteApiMap;
            _monitoredRemoteOperator = monitoredRemoteOperator;
            _applicationRecorder     = applicationRecorder;

            _traceableRemoteApiMap.RegisterWrongCommandHandler(WrongCommandHandler);
            _monitoredRemoteOperator.Start();
        }
コード例 #9
0
        private static IRunnable SetupCoreHandler(ITraceableRemoteApiMap map, IApplicationRecorder recorder)
        {
            recorder.RecordReceived += s => Console.WriteLine(s);

            // Create core logic here
            var core = new UsefulLogic(recorder);

            // Register commands here
            map.RegisterCommandWithParameters("set", parameter =>
            {
                core.SetValue(Int32.Parse(parameter.FirstOrDefault()));
            });

            return(core);
        }
コード例 #10
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);
        }
コード例 #11
0
 public RemoteRecordsSenderTests()
 {
     _consistentMessageSender = Mock.Create <IСonsistentMessageSender>();
     _applicationRecorder     = Mock.Create <IApplicationRecorder>();
     _recorder = Mock.Create <IRecorder>();
 }
コード例 #12
0
 public UsefulLogic(IApplicationRecorder recorder)
 {
     _recorder     = recorder;
     _currentValue = 0;
 }