ln.objects/ng/storage/bases/ChainedStorage.cs

44 lines
1.5 KiB
C#

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<Guid> GetDocumentIDs() => Storage.GetDocumentIDs();
public virtual IEnumerable<Guid> GetDocumentIDs(string path, Predicate<ODBEntity> 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; }
}
}