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(); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }