Ejemplo 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);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Dequeue Message
        /// </summary>
        /// <returns></returns>
        public virtual IQueueItem Dequeue()
        {
            Ptr ptr = Ptr.Empty;

            try
            {
                //using (TransactionScope tran = new TransactionScope())
                //{

                if (highQ.TryDequeue(out ptr))
                {
                    return(DequeueScop(ptr));
                }
                else if (mediumQ.TryDequeue(out ptr))
                {
                    return(DequeueScop(ptr));
                }
                else if (normalQ.TryDequeue(out ptr))
                {
                    return(DequeueScop(ptr));
                }
                else
                {
                    return(null);
                }

                //changed:syncCount:
                //if (ptr == Guid.Empty)
                //    ptr = mediumQ.Dequeue();
                //else if (ptr == Guid.Empty)
                //    ptr = normalQ.Dequeue();

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

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

            return(null);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Dequeue Message
        /// </summary>
        /// <returns></returns>
        public virtual IQueueItem Dequeue(Ptr ptr)
        {
            try
            {
                return(DequeueScop(ptr));
            }
            catch (TransactionAbortedException tex)
            {
                QLogger.Exception("PriorityQueue Dequeue error ", tex);
            }
            catch (Exception ex)
            {
                QLogger.Exception("PriorityQueue Dequeue error ", ex);
            }

            return(null);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Dequeue Message
        /// </summary>
        /// <returns></returns>
        public virtual bool TryDequeue(out IQueueItem item)
        {
            Ptr ptr = Ptr.Empty;

            try
            {
                //using (TransactionScope tran = new TransactionScope())
                //{

                if (highQ.TryDequeue(out ptr))
                {
                    item = DequeueScop(ptr);
                    return(item != null);
                }
                else if (mediumQ.TryDequeue(out ptr))
                {
                    item = DequeueScop(ptr);
                    return(item != null);
                }
                else if (normalQ.TryDequeue(out ptr))
                {
                    item = DequeueScop(ptr);
                    return(item != null);
                }
                else
                {
                    item = null;
                    return(false);
                }
                //}
            }
            catch (Exception ex)
            {
                QLogger.Exception("PriorityQueue Dequeue error ", ex);
            }

            item = null;
            return(false);
        }