Esempio n. 1
0
        public bool Push(IMessage item)
        {
            if (eState.None == m_eState)
            {
                return(false);
            }

            var spinWait = new SpinWait();

            while (true)
            {
                if (false == m_queue.Enqueue(item))
                {
                    spinWait.SpinOnce();
                    Logger.Warn("Queue Full");
                    return(false);
                }
                else
                {
                    break;
                }
            }

            return(true);
        }
        public override bool TrySend(ArraySegment <byte> segment)
        {
            //DetectConnected();
            if (Client == null)
            {
                return(true);
            }

            if (!m_SendingQueue.Enqueue(segment))
            {
                return(false);
            }

            if (Interlocked.CompareExchange(ref m_IsSending, 1, 0) != 0)
            {
                return(true);
            }

            DequeueSend();

            return(true);
        }
Esempio n. 3
0
 public void Add(T item)
 {
     _queue.Enqueue(item);
     _batchNotifier.Notify();
 }