public async Task <IBucket> CreateBucket(BucketAddress address) { var res = new Bucket(address, bucketStoreFactory); await res.Init(); return(res); }
public Stream OpenRead(BucketAddress bucketAddress) { if (streams.TryGetValue(bucketAddress, out NCS stream)) { return(new MemoryStream(stream.Data)); } return(streams[bucketAddress] = new NCS()); }
public Stream OpenRead(BucketAddress bucketAddress) { var fileName = BucketPath(bucketAddress); if (!File.Exists(fileName)) { return(null); } return(new FileStream(fileName, FileMode.Open, FileAccess.Read)); }
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)); }
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)); }
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); }
public ZipStore(BucketAddress address, IBucketStreamProvider bucketStreamProvider) { this.address = address; this.bucketStreamProvider = bucketStreamProvider; }
string BucketPath(BucketAddress bucketAddress) { return(Path.Combine(bucketsFolderPath, $"{bucketAddress.TrainId:D3}/{bucketAddress.BagId:D3}/{bucketAddress.BucketId:D3}")); }
public Task <IBucketStore> CreateStore(BucketAddress info) { return(Task.FromResult <IBucketStore>(new ZipStore(info, bucketStreamProvider))); }
public Bucket(BucketAddress bucketInfo, IBucketStoreFactory bucketStoreFactory) { this.Info = bucketInfo; this.bucketStoreFactory = bucketStoreFactory; }
public Stream OpenWrite(BucketAddress bucketAddress) { return(streams[bucketAddress] = new NCS()); }