public PsnChannelTrendLoaderSimple(IPsnProtocolParameterConfiguration signalConfiguration, IPsnProtocolCommandPartConfiguration commandPartConfiguration, IPsnData psnData, IPsnProtocolConfiguration psnConfiguration, IPsnDataInformation psnDataInformation)
 {
     _signalConfiguration      = signalConfiguration;
     _commandPartConfiguration = commandPartConfiguration;
     _psnData            = psnData;
     _psnConfiguration   = psnConfiguration;
     _psnDataInformation = psnDataInformation;
 }
示例#2
0
 public PsnChannelTrendLoaderMerged(IPsnMergedParameter mergedParam, IPsnData psnData, IPsnProtocolConfiguration psnConfiguration, IPsnDataInformation psnDataInformation)
 {
     _mergedParam        = mergedParam;
     _psnData            = psnData;
     _psnConfiguration   = psnConfiguration;
     _psnDataInformation = psnDataInformation;
     _loadedTrendsCount  = 0;
 }
示例#3
0
        public PsnLogRelay(
            IPsnDataInformation psnDataInformation,
            IPsnData psnData,
            IPsnConfiguration psnConfiguration,
            IPsnProtocolConfiguration psnConfigurationLowLevel,
            IPsnDataCustomConfigration psnDataCustomConfigration,
            IThreadNotifier uiNotifier,
            IWorker <Action> bworker,
            IStorage <IPsnProtocolConfiguration> psnProtocolStorage,
            IPsnDataCustomConfigurationsStorage psnDataCustomConfigurationStorage,
            IKeyValueStorageHolder repoStorageHolder)
        {
            _logIntegrity       = PsnLogIntegrity.Unknown;
            _psnDataInformation = psnDataInformation;
            _psnData            = psnData;
            _psnDataPaged       = _psnData.PagesInformation;

            _psnConfiguration         = psnConfiguration;
            _psnConfigurationLowLevel = psnConfigurationLowLevel;

            _psnDataCustomConfigration = new PsnDataCustomConfigurationSimple(
                psnDataCustomConfigration.Id,
                psnDataCustomConfigration.PsnConfigurationId,
                psnDataCustomConfigration.CustomLogName);

            _uiNotifier         = uiNotifier;
            _bworker            = bworker;
            _psnProtocolStorage = psnProtocolStorage;
            _psnDataCustomConfigurationStorage = psnDataCustomConfigurationStorage;

            _meters = new ObservableCollection <IPsnMeter>();

            // TODO: i get logs for FTP logs also
            //_unicSignalIdStorage = new KeyValueStringStorageXmlMemCache(Path.Combine(Support.GetAppDataDirectoryPathAndCreateItIfNeeded(), Id.UnicString + ".Id.xml"));
            _unicSignalIdStorage = repoStorageHolder.GetStorage(Id.UnicString);
            //_unicSignalIdStorage = new KvStorageDbreezed(Id.UnicString);

            RebuildMetersUnsafe();
        }
示例#4
0
        private void InitialTreeBuildUnsafe(Action <double> progressChangeAction)
        {
            // Этот метод, в отличие от UpdateLocomotivesUnsafe() не оперирует хэшами,
            // что позволяет выиграть производительность в медленных хранилищах (например, NAND)

            var devInfos     = _deviceInformationStorage.DeviceInformations.ToList();
            var psnDatas     = _psnDataStorage.PsnDatas.ToList();
            var psnDataInfos = _psnDataInformtationStorage.PsnDataInformations.ToList();

            var signal = new AutoResetEvent(false);
            //Exception exc = null;
            //_uiNotifier.Notify(
            //() => {
            //try {
            int totalDevInfosCount    = devInfos.Count;
            int currentDevInfoZbIndex = 0;

            foreach (var devInfo in devInfos)
            {
                var loc = new Locomotive(devInfo.Name, _backWorker, _deviceInformationStorage);

                _uiNotifier.NotifyAndWait(() => _locomotives.Add(loc));


                var section = new Section(new UidStringToLower(devInfo.Id.IdentyString), devInfo.Description, _backWorker, _deviceInformationStorage);

                _uiNotifier.NotifyAndWait(() => loc.Sections.Add(section));


                IDeviceInformation info = devInfo;

                var psnDatasInfosForDev       = psnDataInfos.Where(pdi => pdi.DeviceInformationId.ToString() == info.Id.ToString()).ToList();
                var totalPsnDatasCount        = psnDatasInfosForDev.Count;
                int currentPsnDataInfoZbIndex = 0;
                foreach (var psnDataInfo in psnDatasInfosForDev)
                {
                    try {
                        var psnData         = psnDatas.First(pl => pl.Id.IdentyString == psnDataInfo.Id.IdentyString);
                        var psnCustomConfig = _psnDataCustomConfigurationsStorage.Configurations.First(pc => pc.Id.IdentyString == psnDataInfo.Id.IdentyString);

                        var psnConfig = _psnConfigurationsStorage.StoredItems.First(pc => pc.Id.IdentyString.ToLower() == psnCustomConfig.PsnConfigurationId.IdentyString.ToLower());

                        var builder           = new PsnProtocolConfigBuilderFromLowLevel(psnConfig);
                        var psnProtocolConfig = builder.Build();

                        IPsnDataInformation dataInfo = psnDataInfo;
                        var psnLog = new PsnLogRelay(
                            psnDataInfo
                            , psnData
                            , psnProtocolConfig
                            , psnConfig
                            , psnCustomConfig
                            , _uiNotifier
                            , _backWorker
                            , _psnConfigurationsStorage
                            , _psnDataCustomConfigurationsStorage
                            , _kvStorageHolder);

                        _uiNotifier.NotifyAndWait(() => section.Psns.Add(psnLog));
                    }
                    catch (Exception ex) {
                        // TODO: catch exception and deliver it to user as warning message
                        Console.WriteLine(ex);
                    }
                    currentPsnDataInfoZbIndex++;
                    progressChangeAction((currentDevInfoZbIndex * 100.0 + currentPsnDataInfoZbIndex * 100.0 / totalPsnDatasCount) / totalDevInfosCount);
                }
                currentDevInfoZbIndex++;
                progressChangeAction(currentDevInfoZbIndex * 100.0 / totalDevInfosCount);
            }
        }