public void Register(IMessageFrameWriter messageFrameWriter) { if (messageFrameWriter == null) throw new ArgumentNullException("messageFrameWriter"); var messageQueuePayload = new MessageFrameWriterPayload(messageFrameWriter); if (_messageFrameWriters.TryAdd(messageFrameWriter, messageQueuePayload)) { _messageWritersQueueForRoundRobin.Enqueue(messageQueuePayload); } StartAsyncProcessingIfNotStartedYet(); }
private async Task LoopMessageQueueAsync(MessageFrameWriterPayload messageFrameWriterPayload, CancellationToken cancellationToken, Action finalAction = null) { try { await _messageQueue.SendFromQueueAsync(messageFrameWriterPayload.Writer, cancellationToken); } finally { messageFrameWriterPayload.Busy.Set(false); if (finalAction != null) { finalAction(); } } }
public void Register(IMessageFrameWriter messageFrameWriter) { if (messageFrameWriter == null) { throw new ArgumentNullException("messageFrameWriter"); } var messageQueuePayload = new MessageFrameWriterPayload(messageFrameWriter); if (_messageFrameWriters.TryAdd(messageFrameWriter, messageQueuePayload)) { _messageWritersQueueForRoundRobin.Enqueue(messageQueuePayload); } StartAsyncProcessingIfNotStartedYet(); }
private async Task LoopMessageQueueAsync(MessageFrameWriterPayload messageFrameWriterPayload, CancellationToken cancellationToken, Action finalAction = null) { try { await _messageQueue.SendFromQueueAsync(messageFrameWriterPayload.Writer, cancellationToken); } finally { messageFrameWriterPayload.Busy.Set(false); if (finalAction != null) finalAction(); } }