Pageable<T>
A collection of values that may take multiple service requests to
iterate over.
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Threading;
namespace Azure
{
[System.Runtime.CompilerServices.NullableContext(1)]
[System.Runtime.CompilerServices.Nullable(0)]
public abstract class Pageable<T> : IEnumerable<T>, IEnumerable
{
[System.Runtime.CompilerServices.Nullable(new byte[] {
0,
1
})]
private class StaticPageable : Pageable<T>
{
private readonly IEnumerable<Page<T>> _pages;
public StaticPageable(IEnumerable<Page<T>> pages)
{
_pages = pages;
}
public override IEnumerable<Page<T>> AsPages([System.Runtime.CompilerServices.Nullable(2)] string continuationToken = null, int? pageSizeHint = default(int?))
{
bool shouldReturnPages = continuationToken == null;
foreach (Page<T> page in this._pages) {
if (shouldReturnPages)
yield return page;
else if (continuationToken == page.ContinuationToken) {
shouldReturnPages = true;
}
}
}
}
protected virtual CancellationToken CancellationToken { get; }
protected Pageable()
{
CancellationToken = CancellationToken.None;
}
protected Pageable(CancellationToken cancellationToken)
{
CancellationToken = cancellationToken;
}
public abstract IEnumerable<Page<T>> AsPages([System.Runtime.CompilerServices.Nullable(2)] string continuationToken = null, int? pageSizeHint = default(int?));
[System.Runtime.CompilerServices.NullableContext(2)]
[EditorBrowsable(EditorBrowsableState.Never)]
public override string ToString()
{
return base.ToString();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
public virtual IEnumerator<T> GetEnumerator()
{
foreach (Page<T> item in this.AsPages((string)null, (int?)null)) {
foreach (T item2 in (IEnumerable<T>)item.Values) {
yield return item2;
}
}
}
public static Pageable<T> FromPages(IEnumerable<Page<T>> pages)
{
return new StaticPageable(pages);
}
[System.Runtime.CompilerServices.NullableContext(2)]
[EditorBrowsable(EditorBrowsableState.Never)]
public override bool Equals(object obj)
{
return base.Equals(obj);
}
[EditorBrowsable(EditorBrowsableState.Never)]
public override int GetHashCode()
{
return base.GetHashCode();
}
}
}