예제 #1
0
        /// <summary>
        /// Dequeue an item in the queue on the specified key.
        /// </summary>
        /// <typeparam name="TKey"></typeparam>
        /// <typeparam name="TItem"></typeparam>
        /// <param name="queueMap"></param>
        /// <param name="key"></param>
        /// <returns></returns>
        public static async Task <TItem> DequeueItemOrDefaultAsync <TKey, TItem>(this IQueueMap <TKey, TItem> queueMap,
                                                                                 TKey key)
        {
            var queue = await queueMap.GetValueOrDefaultAsync(key).ConfigureAwait(false);

            if (queue == null)
            {
                return(default(TItem));
            }
            return(await queue.DequeueOrDefaultAsync().ConfigureAwait(false));
        }
예제 #2
0
        /// <summary>
        /// Adds an item to the queue.
        /// If the key doesn't exists, it will be created.
        /// If the value already exists, it is overwritten.
        /// </summary>
        /// <typeparam name="TKey">The type of the key.</typeparam>
        /// <typeparam name="TItem">The type of the item.</typeparam>
        /// <param name="queueMap">The queue map.</param>
        /// <param name="key">The key.</param>
        /// <param name="item">The item.</param>
        /// <returns></returns>
        public static async Task EnqueueItemAsync <TKey, TItem>(this IQueueMap <TKey, TItem> queueMap, TKey key, TItem item)
        {
            var queue = await queueMap.GetValueOrEmptyAsync(key).ConfigureAwait(false);

            await queue.EnqueueAsync(item).ConfigureAwait(false);
        }
예제 #3
0
 public ScopedQueueMap(IQueueMap <TKey, TItem> map, IScope scope, string identifier, ISerializer <TKey> keySerializer)
     : base(map, scope, identifier, keySerializer)
 {
 }