public IStoreBackup CreateBackup(Func <IStoreBackup> createEmptyStoreBackup, IKVLogger logger = null)
 {
     lock (GetLockObject())
     {
         var storeBackup = createEmptyStoreBackup();
         storeBackup.AddRange(this.Select(s => s.Value.ToBackupRow(s.Key)));
         return(storeBackup);
     }
 }
        private void _Set(StoreRow item, IKVLogger logger)
        {
            if (item.Expiry != null)
            {
                _provider.Set(item.Key, item.Value, item.Expiry.Value);
            }
            else
            {
                _provider.Set(item.Key, item.Value);
            }

            logger.LogStoreCall("ExportableStore.Set ", item.Key, item.Value, null, item.Expiry);
        }
        public IStoreBackup CreateBackup(Func <IStoreBackup> createEmptyStoreBackup, IKVLogger logger = null)
        {
            var localLogger = logger ?? new NullLogger();

            if (_provider is IExportableStore)
            {
                return((_provider as IExportableStore).CreateBackup(createEmptyStoreBackup, localLogger));
            }
            else
            {
                var storeBackup           = createEmptyStoreBackup();
                var storeBackupEnumerable = _CreateStoreBackupEnumerable(createEmptyStoreBackup, localLogger);

                storeBackup.AddRange(storeBackup);
                return(storeBackup);
            }
        }
 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);
         }
     }
 }
        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);
                        }
                    }
                }
            }
        }
        private IEnumerable <StoreRow> _CreateStoreBackupEnumerable(Func <IStoreBackup> createEmptyStoreBackup, IKVLogger logger)
        {
            var keys = _provider.GetAllKeys();

            foreach (var key in keys)
            {
                DateTime?expiry = null;
                var      value  = _provider.Get(key);
                try
                {
                    expiry = _provider.ExpiresOn(key);
                }
                catch (NotImplementedException)
                {}

                yield return(new StoreRow()
                {
                    Expiry = expiry, Key = key, Value = value
                });
            }
        }
Example #7
0
 public static void LogSet(this IKVLogger logger, StoreRow item)
 {
 }
Example #8
0
 public void ApplyBackup(IStoreBackup backupToApply, RestoreStrategy strategy = RestoreStrategy.Overwrite, IKVLogger logger = null)
 {
     _memoryBackingStore.ApplyBackup(backupToApply, strategy, logger);
 }
Example #9
0
 public IStoreBackup CreateBackup(Func <IStoreBackup> createEmptyStoreBackup, IKVLogger logger = null)
 {
     return(_memoryBackingStore.CreateBackup(createEmptyStoreBackup, logger));
 }
 public LoggingKVStore(IKVStore underlyingStore, IKVLogger logger)
 {
     _store  = underlyingStore;
     _logger = logger;
 }
Example #11
0
 public KVStoreMigrator(IExportableStore source, IExportableStore destination, IKVLogger logger = null)
 {
     _source      = source;
     _destination = destination;
     _logger      = logger ?? new NullLogger();
 }