private async Task <Chunk> GetChunkAtAsync([NotNull] IFdbTransaction trans, long offset) { Contract.Requires(trans != null && offset >= 0); var chunkKey = await trans.GetKeyAsync(FdbKeySelector.LastLessOrEqual(DataKey(offset))).ConfigureAwait(false); if (chunkKey.IsNull) { // nothing before (sparse) return(default(Chunk)); } if (chunkKey < DataKey(0)) { // off beginning return(default(Chunk)); } long chunkOffset = DataKeyOffset(chunkKey); Slice chunkData = await trans.GetAsync(chunkKey).ConfigureAwait(false); if (chunkOffset + chunkData.Count <= offset) { // in sparse region after chunk return(default(Chunk)); } return(new Chunk(chunkKey, chunkData, chunkOffset)); }
private async Task Scenario5(IFdbTransaction tr) { var location = FdbSubspace.Create(Slice.FromAscii("TEST")); //tr.Set(location.Pack(42), Slice.FromString("42")); //tr.Set(location.Pack(50), Slice.FromString("50")); //tr.Set(location.Pack(60), Slice.FromString("60")); var x = await tr.GetKeyAsync(FdbKeySelector.LastLessThan(location.Pack(49))); Console.WriteLine(x); tr.Set(location.Pack("FOO"), Slice.FromString("BAR")); }
public virtual Task <Slice> GetKeyAsync(KeySelector selector) { ThrowIfDisposed(); return(m_transaction.GetKeyAsync(selector)); }
private async Task<Chunk> GetChunkAtAsync(IFdbTransaction trans, long offset) { Contract.Requires(trans != null && offset >= 0); var chunkKey = await trans.GetKeyAsync(FdbKeySelector.LastLessOrEqual(DataKey(offset))).ConfigureAwait(false); if (chunkKey.IsNull) { // nothing before (sparse) return default(Chunk); } if (chunkKey < DataKey(0)) { // off beginning return default(Chunk); } long chunkOffset = DataKeyOffset(chunkKey); Slice chunkData = await trans.GetAsync(chunkKey).ConfigureAwait(false); if (chunkOffset + chunkData.Count <= offset) { // in sparse region after chunk return default(Chunk); } return new Chunk(chunkKey, chunkData, chunkOffset); }