public IVideo[] GetVideos(IVideoRequestType requestType, int timeoutMs, int maxPerPage, int page, out int videosAvailable) { VideoBuffer buffer = GetBuffer(requestType, timeoutMs, maxPerPage); // Insure we have enough videos in the Arraylist to satisfy the request int maxRequest = page * maxPerPage; buffer.FetchMore(maxRequest - buffer.Videos.Count); videosAvailable = buffer.Available; int startRequest = (page - 1) * maxPerPage; int count = maxPerPage; if (startRequest + maxPerPage > buffer.Videos.Count) { count = buffer.Videos.Count - startRequest; } // Deal with out of range return(buffer.Videos.GetRange(startRequest, count).ToArray()); }