コード例 #1
0
 public void ApplyBackup(IStoreBackup backupToApply, RestoreStrategy strategy = RestoreStrategy.Overwrite, IKVLogger logger = null)
 {
     lock (GetLockObject())
     {
         foreach (var row in backupToApply)
         {
             this[row.Key] = new MemoryStorageRow(row);
         }
     }
 }
コード例 #2
0
        public void ApplyBackup(IStoreBackup backupToApply, RestoreStrategy strategy = RestoreStrategy.Overwrite, IKVLogger logger = null)
        {
            var localLogger = logger ?? new NullLogger();

            if (_provider is IExportableStore)
            {
                (_provider as IExportableStore).ApplyBackup(backupToApply, strategy, localLogger);
            }
            else
            {
                foreach (var item in backupToApply)
                {
                    if (strategy == RestoreStrategy.Overwrite)
                    {
                        _Set(item, localLogger);
                    }

                    else if (strategy == RestoreStrategy.KeepExisting)
                    {
                        var value = _provider.Get(item.Key);
                        if (string.IsNullOrEmpty(value))
                        {
                            _Set(item, localLogger);
                        }
                    }
                    else if (strategy == RestoreStrategy.UseLatest)
                    {
                        DateTime?expiry = null;
                        try
                        {
                            expiry = _provider.ExpiresOn(item.Key);
                        }
                        catch (NotImplementedException)
                        {
                        }

                        if (expiry != null && item.Expiry == null)
                        {
                            _Set(item, localLogger);
                        }

                        if (expiry != null && item.Expiry != null && item.Expiry > expiry)
                        {
                            _Set(item, localLogger);
                        }
                    }
                }
            }
        }
コード例 #3
0
 public void ApplyBackup(IStoreBackup backupToApply, RestoreStrategy strategy = RestoreStrategy.Overwrite, IKVLogger logger = null)
 {
     _memoryBackingStore.ApplyBackup(backupToApply, strategy, logger);
 }
コード例 #4
0
        public void Migrate(RestoreStrategy strategy = RestoreStrategy.Overwrite)
        {
            var backup = _source.CreateBackup(() => new LazyStoreBackup(), _logger);

            _destination.ApplyBackup(backup, strategy, _logger);
        }