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); }
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); }
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; } }