public PsnChannelTrendLoaderSimple(IPsnProtocolParameterConfiguration signalConfiguration, IPsnProtocolCommandPartConfiguration commandPartConfiguration, IPsnData psnData, IPsnProtocolConfiguration psnConfiguration, IPsnDataInformation psnDataInformation) { _signalConfiguration = signalConfiguration; _commandPartConfiguration = commandPartConfiguration; _psnData = psnData; _psnConfiguration = psnConfiguration; _psnDataInformation = psnDataInformation; }
public PsnChannelTrendLoaderMerged(IPsnMergedParameter mergedParam, IPsnData psnData, IPsnProtocolConfiguration psnConfiguration, IPsnDataInformation psnDataInformation) { _mergedParam = mergedParam; _psnData = psnData; _psnConfiguration = psnConfiguration; _psnDataInformation = psnDataInformation; _loadedTrendsCount = 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(); }
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); } }