コード例 #1
0
 public InfiniteQueue(int capacity, ElementsProvider elementsProviderFunction, RefillPolicy policy = RefillPolicy.HALF_QUEUE)
 {
     _generatedElements = new List <T>();
     _elementsRequests  = new Queue <Action>();
     _requesting        = false;
     _policy            = policy;
     this.capacity      = capacity;
     _provider          = elementsProviderFunction;
     CheckListState();
 }
コード例 #2
0
 /// <summary>
 /// Generates a pool of <paramref name="count"/> true random floats in the range [<paramref name="min"/>, <paramref name="max"/>].
 /// Generates an auto-refill pool of <paramref name="capacity"/> true random floats in the range [<paramref name="min"/>, <paramref name="max"/>].
 /// It makes an asynchronus refill considering the <paramref name="refillPolicy"/>.
 /// It take a few time to be refilled. See <see cref="InfiniteQueue{T}"/>.
 /// </summary>
 /// <param name="capacity">The amount of values holded.</param>
 /// <param name="min">The smallest number generated</param>
 /// <param name="max">The largest number generated</param>
 /// <param name="refillPolicy">The rules to perform an asynchronus refill.</param>
 /// <returns>A configured <see cref="InfiniteQueue{T}"/></returns>
 public InfiniteQueue <float> InfiniteFloatPoolInRange(int capacity, float min, float max, RefillPolicy refillPolicy)
 {
     return(new InfiniteQueue <float>(capacity, (count, pool) => GenerateFloatPoolInRange(count, min, max, pool), refillPolicy));
 }
コード例 #3
0
 /// <summary>
 /// Generates an auto-refill pool of <paramref name="capacity"/> true random floats in the range [0, 1].
 /// It makes an asynchronus refill considering the <paramref name="refillPolicy"/>.
 /// It take a few time to be refilled. See <see cref="InfiniteQueue{T}"/>.
 /// </summary>
 /// <param name="capacity">The amount of values holded.</param>
 /// <param name="refillPolicy">The rules to perform an asynchronus refill.</param>
 /// <returns>A configured <see cref="InfiniteQueue{T}"/></returns>
 public InfiniteQueue <float> InfiniteFloatPool(int capacity, RefillPolicy refillPolicy)
 {
     return(new InfiniteQueue <float>(capacity, GenerateFloatPool, refillPolicy));
 }
コード例 #4
0
 /// <summary>
 /// Generates an auto-refill pool of <paramref name="capacity"/> true random ints.
 /// It makes an asynchronus refill considering the <paramref name="refillPolicy"/>.
 /// It take a few time to be refilled. See <see cref="InfiniteQueue{T}"/>.
 /// </summary>
 /// <param name="capacity">The amount of values holded.</param>
 /// <param name="refillPolicy">The rules to perform an asynchronus refill.</param>
 /// <returns>A configured <see cref="InfiniteQueue{T}"/></returns>
 public InfiniteQueue <int> InfiniteInt32Pool(int capacity, RefillPolicy refillPolicy)
 {
     return(new InfiniteQueue <int>(capacity, GenerateInt32Pool, refillPolicy));
 }
コード例 #5
0
 /// <summary>
 /// Generates an auto-refill pool of <paramref name="capacity"/> true random bytes.
 /// It makes an asynchronus refill considering the <paramref name="refillPolicy"/>.
 /// It take a few time to be refilled. See <see cref="InfiniteQueue{T}"/>.
 /// </summary>
 /// <param name="capacity">The amount of values holded.</param>
 /// <param name="refillPolicy">The rules to perform an asynchronus refill.</param>
 /// <returns>A configured <see cref="InfiniteQueue{T}"/></returns>
 public InfiniteQueue <byte> InfiniteBytePool(int capacity, RefillPolicy refillPolicy)
 {
     return(new InfiniteQueue <byte>(capacity, GenerateBytePool, refillPolicy));
 }