Exemplo n.º 1
0
        /// <summary>
        /// Dequeue Message
        /// </summary>
        /// <returns></returns>
        public virtual IQueueItem Dequeue(Priority priority)
        {
            Ptr ptr = Ptr.Empty;

            try
            {
                //using (TransactionScope tran = new TransactionScope())
                //{
                switch (priority)
                {
                case Priority.Normal:
                    if (normalQ.TryDequeue(out ptr))
                    {
                        return(DequeueScop(ptr));
                    }
                    break;

                case Priority.Medium:
                    if (mediumQ.TryDequeue(out ptr))
                    {
                        return(DequeueScop(ptr));
                    }
                    break;

                case Priority.High:
                    if (highQ.TryDequeue(out ptr))
                    {
                        return(DequeueScop(ptr));
                    }
                    break;
                }

                return(null);

                //if (ptr.IsEmpty)
                //{
                //    return GetFirstItem();
                //}
                //else
                //{
                //    return DequeueScop(ptr);
                //}

                //if (item == null)
                //{
                //    item = Dequeue(priority);
                //}
                //}
            }
            catch (Exception ex)
            {
                QLogger.Exception("PriorityQueue Dequeue error ", ex);
            }

            return(null);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Dequeue Message
        /// </summary>
        /// <returns></returns>
        public virtual Ptr Dequeue(Priority priority)
        {
            Ptr ptr = Ptr.Empty;

            try
            {
                using (TransactionScope tran = new TransactionScope())
                {
                    switch (priority)
                    {
                    case Priority.Normal:
                        if (normalQ.TryDequeue(out ptr))
                        {
                            return(ptr);
                        }
                        break;

                    case Priority.Medium:
                        if (mediumQ.TryDequeue(out ptr))
                        {
                            return(ptr);
                        }
                        break;

                    case Priority.High:
                        if (highQ.TryDequeue(out ptr))
                        {
                            return(ptr);
                        }
                        break;
                    }

                    return(ptr);
                }
            }
            catch (Exception ex)
            {
                Netlog.Exception("PriorityQueue Dequeue error ", ex);
            }

            return(ptr);
        }