ArgsTests.Data.TestLoadMoreDataSource.LoadMoreAsync C# (CSharp) Method

LoadMoreAsync() protected method

protected LoadMoreAsync ( CollectionQuery query, object continuationToken ) : Task
query PowerArgs.Cli.CollectionQuery
continuationToken object
return Task
        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;
            });
        }