예제 #1
0
        public CompensateActivityHostSpecification(ICompensateActivityFactory <TActivity, TLog> activityFactory, IActivityConfigurationObserver observer)
        {
            _activityFactory = activityFactory;

            _activityPipeConfigurator   = new PipeConfigurator <CompensateActivityContext <TActivity, TLog> >();
            _compensatePipeConfigurator = new PipeConfigurator <CompensateContext <TLog> >();
            _routingSlipConfigurator    = new RoutingSlipConfigurator();
            _observers = new ActivityObservable();

            _configurationObservers = new ActivityConfigurationObservable();
            _configurationObservers.Connect(observer);
        }
예제 #2
0
        public ExecuteActivityHostSpecification(IExecuteActivityFactory <TActivity, TArguments> activityFactory, IActivityConfigurationObserver observer)
        {
            _activityFactory = activityFactory;

            _activityPipeConfigurator = new PipeConfigurator <ExecuteActivityContext <TActivity, TArguments> >();
            _executePipeConfigurator  = new PipeConfigurator <ExecuteContext <TArguments> >();
            _routingSlipConfigurator  = new RoutingSlipConfigurator();
            _observers = new ActivityObservable();

            _configurationObservers = new ActivityConfigurationObservable();
            _configurationObservers.Connect(observer);
        }
예제 #3
0
        /// <summary>
        /// Демо паттерна "Наблюдатель".
        /// Паттерн Наблюдатель определяет отношение «один-ко-многим» между объектами таким образом,
        /// что при изменении состояния одного объекта происходит автоматическое оповещение и обновление всех зависимых объектов.
        /// </summary>
        public void DemoObserver()
        {
            // Создание субъектов (наблюдаемых объектов)
            var climateObservable  = new ClimateObservable();
            var activityObservable = new ActivityObservable();

            // Создание наблюдателей
            var consoleWriterClimateObserver  = new ConsoleWriterObserver(climateObservable);
            var consoleWriterActivityObserver = new ConsoleWriterObserver(activityObservable);
            var telegramBotClimateObserver    = new TelegramBotObserver(climateObservable);
            var telegramBotActivityObserver   = new TelegramBotObserver(activityObservable);

            // Имитация установки значений наблюдаемым объектам
            // (как будто данные пришли по HTTP с ESP8266)
            climateObservable.SetSensorsData(new ClimateInfo
            {
                Temperature = 24,
                Humidity    = 40,
            });
            activityObservable.SetSensorsData(new ActivityInfo
            {
                LastActivity = DateTime.Now,
            });
        }