protected override Task<LoadMoreResult> LoadMoreAsync(CollectionQuery query, object continuationToken)
{
return Task.Factory.StartNew(() =>
{
int index = continuationToken == null ? 0 : int.Parse(continuationToken as string);
// sleep to simulate a delay in the async code
Thread.Sleep(rand.Next((int)MaxDelay.TotalMilliseconds / 2, (int)MaxDelay.TotalMilliseconds));
List<object> batch = new List<object>();
while (batch.Count < LoadBatchSize && index < serverData.Count)
{
if (query.Filter == null || serverData[index].Value.IndexOf(query.Filter, StringComparison.InvariantCultureIgnoreCase) >= 0)
{
batch.Add(serverData[index]);
}
index++;
}
foreach (var item in batch)
{
Assert.IsNotNull(item);
}
var ret = new LoadMoreResult(batch, batch.Count == 0 ? null : index < serverData.Count ? index + "" : null);
return ret;
});
}