private static void FetchQueryResultsRecursively <T>(GetAllObjectsQuery <T> query, ResponseArray <T> queryResult, PaginationParameters pagination, List <T> culmativeResults, Action <List <T> > onSuccess, Action <WebRequestError> onError) { Debug.Assert(pagination.limit > 0); culmativeResults.AddRange(queryResult.Items); if (queryResult.Count < queryResult.Limit) { onSuccess(culmativeResults); } else { pagination.offset += pagination.limit; query(pagination, (r) => FetchQueryResultsRecursively(query, queryResult, pagination, culmativeResults, onSuccess, onError), onError); } }
private static void FetchAllResultsForQuery <T>(GetAllObjectsQuery <T> query, Action <List <T> > onSuccess, Action <WebRequestError> onError) { var pagination = new PaginationParameters() { limit = PaginationParameters.LIMIT_MAX, offset = 0, }; var results = new List <T>(); query(pagination, (r) => FetchQueryResultsRecursively(query, r, pagination, results, onSuccess, onError), onError); }