public static Message Dequeue(this IRabbitMQReader rabbitMessageQueueReader, RabbitMQTaskQueueBinding binding, MessageEncoderFactory messageEncoderFactory, TimeSpan timeout, CancellationToken cancelToken)
 {
     ulong deliveryTag;
     var timeoutTimer = TimeoutTimer.StartNew(timeout);
     var msg = rabbitMessageQueueReader.Dequeue(binding, messageEncoderFactory, timeoutTimer.RemainingTime, cancelToken, out deliveryTag);
     rabbitMessageQueueReader.AcknowledgeMessage(deliveryTag, timeoutTimer.RemainingTime, cancelToken);
     return msg;
 }
 public RabbitMQTaskQueueRequestChannel(BindingContext context, ChannelManagerBase channelManager, EndpointAddress remoteAddress, Uri via, BufferManager bufferManger, RabbitMQTaskQueueBinding binding)
     : base(context, channelManager, binding, new EndpointAddress(RabbitMQTaskQueueUri.Create(remoteAddress.Uri.Host, remoteAddress.Uri.Port, $"r{Guid.NewGuid():N}")))
 {
     MethodInvocationTrace.Write();
     RemoteAddress = remoteAddress;
     _bufferMgr = bufferManger;
     _requestFunc = Request;
     Via = via;
     RemoteUri = new RabbitMQTaskQueueUri(remoteAddress.Uri.ToString());
 }
 protected RabbitMQTaskQueueDuplexChannelBase(BindingContext context, ChannelManagerBase channelManager, RabbitMQTaskQueueBinding binding, EndpointAddress remoteAddress, EndpointAddress localAddress)
     : base(context, channelManager, binding, localAddress)
 {
     MethodInvocationTrace.Write();
     _tryReceiveMethod = TryReceive;
     _receiveFunc = Receive;
     _waitForMsgFunc = WaitForMessage;
     _sendFunc = Send;
     _remoteAddress = remoteAddress;
     _closeOutputSessionFunc = CloseOutputSession;
     _remoteUri = (remoteAddress.Uri == EndpointAddress.AnonymousUri) ? null : new RabbitMQTaskQueueUri(remoteAddress.Uri.ToString());
 }
 public RabbitMQTaskQueueRequestContext(Message requestMessage, RabbitMQTaskQueueBinding binding, EndpointAddress localAddress, MessageEncoderFactory msgEncoderFactory, BufferManager bufferManager, IRabbitMQWriter queueWriter, ulong deliveryTag, IRabbitMQReader queueReader, IDisposable readerHandle)
 {
     _opMgr = new ConcurrentOperationManager(GetType().FullName);
     _queueReader = queueReader;
     _readerHandle = readerHandle;
     _deliveryTag = deliveryTag;
     _bufferMgr = bufferManager;
     _msgEncoderFactory = msgEncoderFactory;
     _replyToAddress = localAddress;
     _binding = binding;
     _rqMsg = requestMessage;
     _reply = Reply;
     _queueWriter = queueWriter;
 }
 public static Message Dequeue(this IRabbitMQReader rabbitMessageQueueReader, RabbitMQTaskQueueBinding binding, MessageEncoderFactory messageEncoderFactory, TimeSpan timeout, CancellationToken cancelToken, out ulong deliveryTag)
 {
     var timeoutTimer = TimeoutTimer.StartNew(timeout);
     var msg = rabbitMessageQueueReader.Dequeue(timeoutTimer.RemainingTime, cancelToken);
     deliveryTag = msg.DeliveryTag;
     Message result;
     try
     {
         result = messageEncoderFactory.Encoder.ReadMessage(msg.Body, (int)binding.MaxReceivedMessageSize);
     }
     catch
     {
         rabbitMessageQueueReader.RejectMessage(msg.DeliveryTag, timeoutTimer.RemainingTime, cancelToken);
         throw;
     }
     return result;
 }