Ejemplo n.º 1
0
        public async Task <IBucket> CreateBucket(BucketAddress address)
        {
            var res = new Bucket(address, bucketStoreFactory);
            await res.Init();

            return(res);
        }
Ejemplo n.º 2
0
        public Stream OpenRead(BucketAddress bucketAddress)
        {
            if (streams.TryGetValue(bucketAddress, out NCS stream))
            {
                return(new MemoryStream(stream.Data));
            }

            return(streams[bucketAddress] = new NCS());
        }
Ejemplo n.º 3
0
        public Stream OpenRead(BucketAddress bucketAddress)
        {
            var fileName = BucketPath(bucketAddress);

            if (!File.Exists(fileName))
            {
                return(null);
            }

            return(new FileStream(fileName, FileMode.Open, FileAccess.Read));
        }
Ejemplo n.º 4
0
        public Stream OpenWrite(BucketAddress bucketAddress)
        {
            var fileName = BucketPath(bucketAddress);
            var folder   = Path.GetDirectoryName(fileName);

            if (!Directory.Exists(folder))
            {
                Directory.CreateDirectory(folder);
            }

            return(new FileStream(fileName, FileMode.Create));
        }
Ejemplo n.º 5
0
        public async Task <string> ReadEntry(ulong address)
        {
            var baddr = new BucketAddress
            {
                TrainId  = address.TrainId(),
                BagId    = address.BagId(),
                BucketId = address.Index() / BagInfo.BagSettings.PerBucketMessages
            };

            var bucket = await GetBucket(baddr);

            return(await bucket
                   .GetEntry(address.Index() % BagInfo.BagSettings.PerBucketMessages));
        }
Ejemplo n.º 6
0
        async Task <IBucket> GetBucket(BucketAddress address)
        {
            IBucket bucket;

            if (currentBucket != null && currentBucket.Value.Bucket.Info.Equals(address))
            {
                bucket = currentBucket.Value.Bucket;
            }
            else
            {
                if (!buckets.TryGetValue(address, out bucket))
                {
                    bucket = buckets[address] = await bucketFactory.CreateBucket(address);
                }
            }
            return(bucket);
        }
Ejemplo n.º 7
0
 public ZipStore(BucketAddress address, IBucketStreamProvider bucketStreamProvider)
 {
     this.address = address;
     this.bucketStreamProvider = bucketStreamProvider;
 }
Ejemplo n.º 8
0
 string BucketPath(BucketAddress bucketAddress)
 {
     return(Path.Combine(bucketsFolderPath,
                         $"{bucketAddress.TrainId:D3}/{bucketAddress.BagId:D3}/{bucketAddress.BucketId:D3}"));
 }
Ejemplo n.º 9
0
 public Task <IBucketStore> CreateStore(BucketAddress info)
 {
     return(Task.FromResult <IBucketStore>(new ZipStore(info, bucketStreamProvider)));
 }
Ejemplo n.º 10
0
 public Bucket(BucketAddress bucketInfo,
               IBucketStoreFactory bucketStoreFactory)
 {
     this.Info = bucketInfo;
     this.bucketStoreFactory = bucketStoreFactory;
 }
Ejemplo n.º 11
0
 public Stream OpenWrite(BucketAddress bucketAddress)
 {
     return(streams[bucketAddress] = new NCS());
 }