using System; using System.Collections.Generic; using ln.objects.catalog; using ln.types.threads; namespace ln.types.odb.ng.storage.bases { public abstract class ChainedStorage : IStorage { public IStorage Storage { get; private set; } public bool IsOpen => Storage.IsOpen; public ChainedStorage(IStorage storage) { Storage = storage; } public virtual bool Open() => Storage.Open(); public virtual void Close() => Storage.Close(); public virtual Document Load(Guid documentID) => Storage.Load(documentID); public virtual void Save(Document document) => Storage.Save(document); public virtual void Delete(Guid documentID) => Storage.Delete(documentID); public virtual bool Contains(Guid documentID) => Storage.Contains(documentID); public virtual IEnumerable GetDocumentIDs() => Storage.GetDocumentIDs(); public virtual IEnumerable GetDocumentIDs(string path, Predicate predicate) => Storage.GetDocumentIDs(path, predicate); public virtual DateTime GetStorageTimestamp(Guid documentID) => Storage.GetStorageTimestamp(documentID); public virtual void EnsureIndex(params string[] path) => Storage.EnsureIndex(path); public virtual bool Refresh(Document document) => Storage.Refresh(document); public virtual IDisposable Lock() => new DisposableLock(this); public virtual void Dispose() { Storage.Dispose(); Storage = null; } public abstract bool IsCaching { get; } } }