Ejemplo n.º 1
0
        public IMessage ReceiveMessage(CancellationToken cancellationToken)
        {
            while (!cancellationToken.IsCancellationRequested)
            {
                var frames = new List <byte[]>();
                var msg    = new Msg();
                msg.InitEmpty();
                try
                {
                    do
                    {
                        if (socket.TryReceive(ref msg, ReceiveWaitTimeout))
                        {
                            frames.Add(msg.Data);
                        }
                    } while (msg.HasMore);

                    if (frames.Count > 0)
                    {
                        ReceiveRate?.Increment();
                        return(Message.FromMultipartMessage(new MultipartMessage(frames)));
                    }
                }
                finally
                {
                    msg.Close();
                }
            }

            return(null);
        }
Ejemplo n.º 2
0
        public T TryReceive()
        {
            T lookup,
              message;

            if (!lookAheadQueue.TryTake(out message))
            {
                messageQueue.TryTake(out message);
            }

            if (!messageQueue.TryTake(out lookup))
            {
                dataAvailable.Reset();
                if (messageQueue.TryTake(out lookup))
                {
                    lookAheadQueue.Add(lookup);
                    dataAvailable.Set();
                }
            }
            else
            {
                lookAheadQueue.Add(lookup);
            }

            ReceiveRate?.Increment();

            return(message);
        }
Ejemplo n.º 3
0
 public void Close()
 {
     if (ConsumerThreadCount != null)
     {
         ConsumerThreadCount.Dispose();
         ConsumerThreadCount = null;
     }
     if (ReceiveThreadCount != null)
     {
         ReceiveThreadCount.Dispose();
         ReceiveThreadCount = null;
     }
     if (ReceiveRate != null)
     {
         ReceiveRate.Dispose();
         ReceiveRate = null;
     }
     if (PublishRate != null)
     {
         PublishRate.Dispose();
         PublishRate = null;
     }
     if (SendRate != null)
     {
         SendRate.Dispose();
         SendRate = null;
     }
     if (ReceiveCount != null)
     {
         ReceiveCount.Dispose();
         ReceiveCount = null;
     }
     if (PublishCount != null)
     {
         PublishCount.Dispose();
         PublishCount = null;
     }
     if (SentCount != null)
     {
         SentCount.Dispose();
         SentCount = null;
     }
     if (ConsumerDuration != null)
     {
         ConsumerDuration.Dispose();
         ConsumerDuration = null;
     }
     if (ConsumerDurationBase != null)
     {
         ConsumerDurationBase.Dispose();
         ConsumerDurationBase = null;
     }
     if (ReceiveDuration != null)
     {
         ReceiveDuration.Dispose();
         ReceiveDuration = null;
     }
     if (ReceiveDurationBase != null)
     {
         ReceiveDurationBase.Dispose();
         ReceiveDurationBase = null;
     }
     if (PublishDuration != null)
     {
         PublishDuration.Dispose();
         PublishDuration = null;
     }
     if (PublishDurationBase != null)
     {
         PublishDurationBase.Dispose();
         PublishDurationBase = null;
     }
 }