Beispiel #1
0
        public CacheBucket Create(string name)
        {
            var names       = BucketNameHelper.ExtractBucketNames(name);
            var rootName    = names[0];
            var storageType = CacheStorageMapping.Instance.GetStorageType(rootName);
            var storage     = _sp.GetService(storageType) as ICacheStorage;

            var parent = GetParentBucket(name, storage, out var lastName);

            var bucket = new CacheBucket(lastName, storage)
            {
                Parent = parent
            };

            return(bucket);
        }
Beispiel #2
0
        private CacheBucket GetParentBucket(string name, ICacheStorage storage, out string lastName)
        {
            var bucketNames = BucketNameHelper.ExtractBucketNames(name);

            lastName = bucketNames.Last();
            if (bucketNames.Length <= 1)
            {
                return(null);
            }
            CacheBucket parent = null;

            foreach (var bucketName in bucketNames.Skip(0).Take(bucketNames.Length - 1).Reverse())
            {
                var bucket = new CacheBucket(bucketName, storage)
                {
                    Parent = parent
                };
                parent = bucket;
            }

            return(parent);
        }