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"));
        }
		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);
		}