Ejemplo n.º 1
0
 /// <summary>
 /// Returns the first document of a cursor returned by a cursor source.
 /// </summary>
 /// <typeparam name="TDocument">The type of the document.</typeparam>
 /// <param name="source">The source.</param>
 /// <param name="cancellationToken">The cancellation token.</param>
 /// <returns>The first document.</returns>
 public static TDocument First <TDocument>(this IAsyncCursorSource <TDocument> source, CancellationToken cancellationToken = default(CancellationToken))
 {
     using (var cursor = source.ToCursor(cancellationToken))
     {
         return(cursor.First(cancellationToken));
     }
 }
Ejemplo n.º 2
0
 private void GetCache(bool reset)
 {
     lock (_lock)
     {
         if (_cursor == null || reset)
         {
             _cursor       = _finder.ToCursor();
             _elementCache = _cursor.MoveNext() ? _cursor.Current.ToList() : new List <BsonDocument>();
         }
         if (_elementCache != null && _position >= _elementCache.Count())
         {
             _elementCache?.Clear();
             _elementCache    = _cursor.MoveNext() ? _cursor.Current.ToList() : new List <BsonDocument>();
             _passedElements += _position;
             _position        = 0;
         }
     }
 }
        // public methods
        public IEnumerator <TDocument> GetEnumerator()
        {
            var cursor = _source.ToCursor(_cancellationToken);

            return(new AsyncCursorEnumerator <TDocument>(cursor, _cancellationToken));
        }