Esempio n. 1
0
        public override void SetCompositionRoot(ICompositionRoot root)
        {
            _compositionRoot = root;

            _scadaPollGatewayPart  = _compositionRoot.GetPartByName("PollGateWay");
            _scadaInteleconGateway = _scadaPollGatewayPart as IInteleconGateway;
            if (_scadaInteleconGateway == null)
            {
                throw new Exception("Не удалось найти PollGateWay через composition root");
            }
            _scadaPollGatewayPart.AddRef();

            _bumizIoManagerPart = _compositionRoot.GetPartByName("BumizIoSubSystem");
            _bumizIoManager     = _bumizIoManagerPart as IBumizIoManager;
            if (_bumizIoManager == null)
            {
                throw new Exception("Не удалось найти BumizIoSubSystem через composition root");
            }
            _bumizIoManagerPart.AddRef();

            _pulseCountersDataStoragePart = _compositionRoot.GetPartByName("BumizEvenSubSystem.PulseCounter");
            _pulseCountersDataStorage     = _pulseCountersDataStoragePart as IPulseCounterDataStorageHolder;
            if (_pulseCountersDataStorage == null)
            {
                throw new Exception("Не удалось найти держатель хранилища импульсных счетчиков через composition root");
            }
            _pulseCountersDataStoragePart.AddRef();

            _attachedControllersInfoSystemPart = _compositionRoot.GetPartByName("GatewayAttachedControllers");
            _attachedControllersInfoSystem     = _attachedControllersInfoSystemPart as IAttachedControllersInfoSystem;
            if (_attachedControllersInfoSystem == null)
            {
                throw new Exception("Не удалось найти GatewayAttachedControllers через composition root");
            }
            _attachedControllersInfoSystemPart.AddRef();

            _gatewayControllesManagerPart = _compositionRoot.GetPartByName("GatewayControllers");
            _gatewayControllesManager     = _gatewayControllesManagerPart as IGatewayControllerInfosSystem;
            if (_gatewayControllesManager == null)
            {
                throw new Exception("Не удалось найти GatewayControllers через composition root");
            }
            _gatewayControllesManagerPart.AddRef();

            foreach (var bumizControllerInfo in _bumizControllerInfos)
            {
                if (_bumizIoManager.BumizObjectExist(bumizControllerInfo.Name))
                {
                    _bumizControllers.Add(new BumizController(_bumizIoManager, _pulseCountersDataStorage, bumizControllerInfo));
                }
                else
                {
                    Log.Log("Не удалось найти информацию о связи по сети БУМИЗ для контроллера: " + bumizControllerInfo.Name);
                }
            }

            Log.Log("Подсистема подключаемых контроллеров БУМИЗ инициализирована, число контроллеров: " + _bumizControllers.Count);
        }
        public override void SetCompositionRoot(ICompositionRoot root)
        {
            _compositionRoot = root;

            _bumizIoManagerPart = _compositionRoot.GetPartByName("BumizIoSubSystem");
            _bumizIoManager     = _bumizIoManagerPart as IBumizIoManager;
            if (_bumizIoManager == null)
            {
                throw new Exception("Не удалось найти BumizIoSubSystem через composition root");
            }
            _bumizIoManagerPart.AddRef();

            foreach (var pulseCounterInfo in _counterInfos)
            {
                try {
                    if (_bumizIoManager.BumizObjectExist(pulseCounterInfo.Key))
                    {
                        _availableInfos.Add(pulseCounterInfo.Value);
                    }
                    else
                    {
                        Log.Log("Не удалось найти информацию о связи по каналу БУМИЗ с объектом " + pulseCounterInfo.Key);
                    }
                }
                catch (Exception ex) {
                    Log.Log("Не удалось связать информацию по импульсному счётчику " + pulseCounterInfo.Key + " с информацией о его сетевом расположении внутри сети БУМИЗ по причине:" + ex);
                }
            }

            // Поток обмена активируется при подключении родительской системы
            if (_counterInfos.Count > 0)
            {
                if (_bumizArchivePollThread.ThreadState == ThreadState.Unstarted)
                {
                    _bumizArchivePollThread.Start();
                }
                else
                {
                    Log.Log("Странно, поток подсистемы чтения архивных данных уже был запущен!");
                }
            }
            else
            {
                Log.Log("Подсистема не будет запущена, т.к. число контроллеров в конфигурации = 0");
            }
        }
        public override void SetCompositionRoot(ICompositionRoot root)
        {
            _compositionRoot = root;

            _bumizIoManagerPart = _compositionRoot.GetPartByName("BumizIoSubSystem");
            _bumizIoManager     = _bumizIoManagerPart as IBumizIoManager;
            if (_bumizIoManager == null)
            {
                throw new Exception("Не удалось найти BumizIoSubSystem через composition root");
            }
            _bumizIoManagerPart.AddRef();

            foreach (var objSyncInfo in _objectsToSync)
            {
                try {
                    if (_bumizIoManager.BumizObjectExist(objSyncInfo))
                    {
                        _bumizNames.Add(objSyncInfo);
                    }
                    else
                    {
                        Log.Log("Не удалось связать информацию по объекту " + objSyncInfo + " с информацией о его сетевом расположении внутри сети БУМИЗ, видимо конфигурация сетевого расположения отсутствует");
                    }
                }
                catch (Exception ex) {
                    Log.Log("Не удалось связать информацию по объекту " + objSyncInfo + " с информацией о его сетевом расположении внутри сети БУМИЗ по причине:" + ex);
                }
            }

            if (_bumizNames.Count > 0)
            {
                if (_bumizTimeSyncThread.ThreadState == ThreadState.Unstarted)
                {
                    _bumizTimeSyncThread.Start();
                }
                else
                {
                    Log.Log("Странно, поток подсистемы синхронизации времени БУМИЗов уже запущен");
                }
            }
            else
            {
                Log.Log("Подсистема не будет запущена, т.к. число объектов конфигурации = 0");
            }
        }