コード例 #1
0
ファイル: RelayRepository.cs プロジェクト: AlienJust/RPD
        public void Open(Action <OnCompleteEventArgs> onComplete, Action <OnProgressChangeEventArgs> onProgressChange)
        {
            _uiNotifier.Notify(() => onProgressChange(new OnProgressChangeEventArgs(0)));
            if (!IsOpened)
            {
                IsOpened = true;
                _backWorker.AddWork(
                    () => {
                    try {
                        var openResult                      = _openStorageFunc();
                        _psnDataStorage                     = openResult.PsnDataStorage;
                        _psnDataInformtationStorage         = openResult.PsnDataInformationStorage;
                        _psnDataCustomConfigurationsStorage = openResult.PsnDataCustomConfigurationsesStorage;
                        _deviceInformationStorage           = openResult.DeviceInformationStorage;
                        _psnConfigurationsStorage           = openResult.PsnConfigurationsStorage;
                        InitialTreeBuildUnsafe(pp => _uiNotifier.NotifyAndWait(() => onProgressChange(new OnProgressChangeEventArgs((int)pp))));

                        _uiNotifier.NotifyAndWait(() => onProgressChange(new OnProgressChangeEventArgs(100)));
                        _uiNotifier.NotifyAndWait(() => onComplete(new OnCompleteEventArgs(OnCompleteEventArgs.CompleteResult.Ok, "Репозиторий успешно открыт")));
                    }
                    catch (Exception ex) {
                        _uiNotifier.NotifyAndWait(() => onComplete(new OnCompleteEventArgs(OnCompleteEventArgs.CompleteResult.Error, ex.ToString())));
                        IsOpened = false;
                    }
                });
            }
            else
            {
                _uiNotifier.Notify(() => onProgressChange(new OnProgressChangeEventArgs(100)));
                _uiNotifier.Notify(() => onComplete(new OnCompleteEventArgs(OnCompleteEventArgs.CompleteResult.Ok, "Внимание, репозиторий уже открыт")));
            }
        }
コード例 #2
0
 public ReposetoryOpenedResultSimple(IPsnDataStorage psnDataStorage, IPsnDataInformationStorage psnDataInformationStorage, IDeviceInformationStorage deviceInformationStorage, IPsnDataCustomConfigurationsStorage psnDataCustomConfigurationsesStorage, IStorage <IPsnProtocolConfiguration> psnConfigurationsStorage)
 {
     _psnDataStorage                       = psnDataStorage;
     _psnDataInformationStorage            = psnDataInformationStorage;
     _deviceInformationStorage             = deviceInformationStorage;
     _psnDataCustomConfigurationsesStorage = psnDataCustomConfigurationsesStorage;
     _psnConfigurationsStorage             = psnConfigurationsStorage;
 }
        private readonly List <IPsnDataCustomConfigrationWritable> _customConfigs;        // writable memory cache

        /// <summary>
        /// Создает новое хранилище В ОЗУ
        /// </summary>
        /// <param name="relayOnStorage">Хранилище источник</param>
        public PsnDataCustomConfigurationsStorageRelayMemoryCache(IPsnDataCustomConfigurationsStorage relayOnStorage)
        {
            if (relayOnStorage == null)
            {
                throw new NullReferenceException("relayOnStorage");
            }

            _subStorage    = relayOnStorage;
            _customConfigs = relayOnStorage.Configurations.Select(pcc => (IPsnDataCustomConfigrationWritable) new PsnDataCustomConfigurationSimple(pcc.Id, pcc.PsnConfigurationId, pcc.CustomLogName)).ToList();
        }
コード例 #4
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();
        }