/// <summary> /// Navigate, instantiate and return the Store as referenced by the storePath. /// Following conditions apply: /// - if any element in the storePath is not found and can't be created even if flag /// is set to true, this throws exception. /// - if any element in the storePath is not found and create flag is false, this returns null. /// </summary> /// <typeparam name="TKey"></typeparam> /// <typeparam name="TValue"></typeparam> /// <param name="storePath"></param> /// <param name="createStoreIfNotExist"></param> /// <param name="storeKeyComparer"></param> /// <param name="isDataInKeySegment"></param> /// <returns></returns> public ISortedDictionary <TKey, TValue> GetStorePersistentKey <TKey, TValue>( string storePath, StoreParameters <TKey> storeConfig = null, Profile fileConfig = null) where TKey : IPersistent, new() { string s; ISortedDictionaryOnDisk container = getContainerWithRootStoreCheck(storePath, out s, config: fileConfig); if (container == null) { throw new ArgumentException(string.Format("Can't get a valid Store Container from storePath {0}.", storePath)); } Sop.IStoreFactory sf = new Sop.StoreFactory(); ISortedDictionary <TKey, TValue> store; if (storeConfig == null) { store = sf.Get <TKey, TValue>(container, s); } else { store = sf.GetPersistentKey <TKey, TValue>(container, s, storeConfig.StoreKeyComparer, storeConfig.CreateStoreIfNotExist, storeConfig.IsDataInKeySegment, storeConfig.MruManaged, storeConfig.IsUnique); if (store != null) { ((Sop.SpecializedDataStore.SimpleKeyValue <TKey, TValue>)store).Path = storePath; store.AutoFlush = storeConfig.AutoFlush; } } return(store); }
public ISortedDictionary <TKey, TValue> GetStorePersistentKey <TKey, TValue>(object container, string storeName, StoreParameters <TKey> storeConfig = null) where TKey : IPersistent, new() { Sop.IStoreFactory sf = new Sop.StoreFactory(); ISortedDictionary <TKey, TValue> store; if (storeConfig == null) { store = sf.Get <TKey, TValue>(container, storeName); } else { store = sf.GetPersistentKey <TKey, TValue>(container, storeName, storeConfig.StoreKeyComparer, storeConfig.CreateStoreIfNotExist, storeConfig.IsDataInKeySegment, storeConfig.MruManaged, storeConfig.IsUnique); if (store != null) { store.AutoFlush = storeConfig.AutoFlush; } } return(store); }