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 }); } }
public static void LogSet(this IKVLogger logger, StoreRow item) { }
public void ApplyBackup(IStoreBackup backupToApply, RestoreStrategy strategy = RestoreStrategy.Overwrite, IKVLogger logger = null) { _memoryBackingStore.ApplyBackup(backupToApply, strategy, logger); }
public IStoreBackup CreateBackup(Func <IStoreBackup> createEmptyStoreBackup, IKVLogger logger = null) { return(_memoryBackingStore.CreateBackup(createEmptyStoreBackup, logger)); }
public LoggingKVStore(IKVStore underlyingStore, IKVLogger logger) { _store = underlyingStore; _logger = logger; }
public KVStoreMigrator(IExportableStore source, IExportableStore destination, IKVLogger logger = null) { _source = source; _destination = destination; _logger = logger ?? new NullLogger(); }