Example #1
0
        public async IAsyncEnumerable <(Pointer, StoredValue)> GetAllPointerValuesAsync()
        {
            switch (Type)
            {
            case MdType.Pointers:
                var pointers    = LocateMany(GetAllPointersAsync().Select(c => c.MdLocator));
                var allPointers = pointers.SelectMany(c => c.Value.GetAllPointerValuesAsync()).ConfigureAwait(false);
                await foreach (var item in allPointers)
                {
                    yield return(item);
                }
                break;

            case MdType.Values:
                var keys = EnumerableExt.LongRange(StartIndex, (ulong)Count);
                foreach (var key in keys)
                {
                    var val = await GetValueAsync(key).ConfigureAwait(false);

                    if (!val.HasValue)
                    {
                        continue;
                    }
                    yield return(new Pointer
                    {
                        MdLocator = MdLocator,
                        MdKey = $"{key}",
                        ValueType = val.Value.ValueType
                    }, val.Value);
                }
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(Type));
            }
        }