Пример #1
0
        /// <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);
        }
Пример #2
0
        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);
        }