68 lines
1.5 KiB
C#
68 lines
1.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using ln.types.odb.values;
|
|
using ln.logging;
|
|
using System.Linq;
|
|
namespace ln.types.odb.ng.storage.session
|
|
{
|
|
public enum SessionSynchronisationStrategy
|
|
{
|
|
BIDIRECTIONAL,
|
|
FORWARDONLY,
|
|
REJECTCHANGED
|
|
}
|
|
|
|
public class SessionStorageContainer : IStorageContainer
|
|
{
|
|
public IStorageContainer StorageContainer { get; private set; }
|
|
public Mapper ODBMapper { get; private set; }
|
|
|
|
public SessionSynchronisationStrategy SynchronisationStrategy { get; set; } = SessionSynchronisationStrategy.REJECTCHANGED;
|
|
|
|
public bool IsOpen => StorageContainer.IsOpen;
|
|
|
|
public SessionStorageContainer(IStorageContainer storageContainer)
|
|
{
|
|
StorageContainer = storageContainer;
|
|
ODBMapper = Mapper.Default;
|
|
}
|
|
|
|
private Dictionary<string, IStorage> storages = new Dictionary<string, IStorage>();
|
|
public IStorage GetStorage(string storageName)
|
|
{
|
|
if (storages.ContainsKey(storageName))
|
|
return storages[storageName];
|
|
|
|
IStorage storage = StorageContainer.GetStorage(storageName);
|
|
storages.Add(storageName, new SessionStorage(this,storage));
|
|
|
|
if (!storage.IsOpen)
|
|
storage.Open();
|
|
|
|
return storages[storageName];
|
|
}
|
|
|
|
public IStorageContainer Open()
|
|
{
|
|
StorageContainer.Open();
|
|
return this;
|
|
}
|
|
|
|
public void Close()
|
|
{
|
|
StorageContainer.Close();
|
|
}
|
|
|
|
public IEnumerable<string> GetStorageNames()
|
|
{
|
|
return StorageContainer.GetStorageNames();
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
}
|
|
|
|
|
|
}
|
|
}
|