61 lines
1.4 KiB
C#
61 lines
1.4 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using ln.types.btree;
|
|
using System.Threading;
|
|
using System.Runtime.ConstrainedExecution;
|
|
using ln.types.threads;
|
|
using ln.objects.catalog;
|
|
|
|
namespace ln.types.odb.ng.storage.bases
|
|
{
|
|
public abstract class StorageBase : IStorage
|
|
{
|
|
BTree<Guid> lockedDocuments = new BTree<Guid>();
|
|
|
|
public StorageBase()
|
|
{
|
|
}
|
|
public abstract bool Open();
|
|
public abstract void Close();
|
|
public abstract bool IsOpen { get; }
|
|
|
|
|
|
public abstract Document Load(Guid documentID);
|
|
public abstract void Save(Document document);
|
|
public abstract void Delete(Guid documentID);
|
|
|
|
public virtual DateTime GetStorageTimestamp(Guid documentID)
|
|
{
|
|
Document doc = Load(documentID);
|
|
return doc.StorageTimeStamp;
|
|
}
|
|
|
|
/* Enumeration */
|
|
public abstract IEnumerable<Guid> GetDocumentIDs();
|
|
public abstract IEnumerable<Guid> GetDocumentIDs(string path, Predicate<ODBEntity> predicate);
|
|
|
|
/* Indeces */
|
|
public abstract void EnsureIndex(params string[] path);
|
|
|
|
public virtual void Dispose()
|
|
{
|
|
if (IsOpen)
|
|
Close();
|
|
}
|
|
|
|
public virtual bool Contains(Guid documentID)
|
|
{
|
|
return GetDocumentIDs().Contains(documentID);
|
|
}
|
|
|
|
public virtual IDisposable Lock()
|
|
{
|
|
return new DisposableLock(this);
|
|
}
|
|
|
|
public abstract bool Refresh(Document document);
|
|
public abstract bool IsCaching { get; }
|
|
}
|
|
}
|