csharp/Microsoft.Azure.Databricks.Client/Pageable.cs (27 lines of code) (raw):
using Azure;
using System.Collections.Generic;
using System;
using System.Threading.Tasks;
namespace Microsoft.Azure.Databricks.Client
{
internal class AsyncPageable<T> : global::Azure.AsyncPageable<T>
{
private readonly Func<string, Task<(List<T>, bool, string)>> _getNextPage;
public AsyncPageable(Func<string, Task<(List<T>, bool, string)>> getNextPage)
{
this._getNextPage = getNextPage;
}
public override async IAsyncEnumerable<Page<T>> AsPages(string continuationToken = default, int? pageSizeHint = default)
{
var nextPageToken = continuationToken;
var hasNextPage = true;
do
{
var response = await _getNextPage(nextPageToken);
hasNextPage = response.Item2;
nextPageToken = response.Item3;
yield return Page<T>.FromValues(response.Item1, nextPageToken, null);
} while (hasNextPage);
}
}
}