public override async Task <FileNotification> ReceiveAsync(TimeSpan timeout) { try { ReceivingAmqpLink receivingLink = await this.faultTolerantReceivingLink.GetReceivingLinkAsync(); AmqpMessage amqpMessage = await receivingLink.ReceiveMessageAsync(timeout); if (amqpMessage != null) { using (amqpMessage) { AmqpClientHelper.ValidateContentType(amqpMessage, CommonConstants.FileNotificationContentType); var fileNotification = await AmqpClientHelper.GetObjectFromAmqpMessageAsync <FileNotification>(amqpMessage); fileNotification.LockToken = new Guid(amqpMessage.DeliveryTag.Array).ToString(); return(fileNotification); } } return(null); } catch (Exception exception) { if (exception.IsFatal()) { throw; } throw AmqpClientHelper.ToIotHubClientContract(exception); } }
public override async Task <FeedbackBatch> ReceiveAsync(CancellationToken cancellationToken) { Logging.Enter(this, nameof(ReceiveAsync)); try { cancellationToken.ThrowIfCancellationRequested(); ReceivingAmqpLink receivingLink = await _faultTolerantReceivingLink.GetReceivingLinkAsync().ConfigureAwait(false); AmqpMessage amqpMessage = await receivingLink.ReceiveMessageAsync(cancellationToken).ConfigureAwait(false); Logging.Info(this, $"Message received is [{amqpMessage}]", nameof(ReceiveAsync)); if (amqpMessage != null) { using (amqpMessage) { AmqpClientHelper.ValidateContentType(amqpMessage, CommonConstants.BatchedFeedbackContentType); IEnumerable <FeedbackRecord> records = await AmqpClientHelper .GetObjectFromAmqpMessageAsync <IEnumerable <FeedbackRecord> >(amqpMessage).ConfigureAwait(false); return(new FeedbackBatch { EnqueuedTime = (DateTime)amqpMessage.MessageAnnotations.Map[MessageSystemPropertyNames.EnqueuedTime], LockToken = new Guid(amqpMessage.DeliveryTag.Array).ToString(), Records = records, UserId = Encoding.UTF8.GetString(amqpMessage.Properties.UserId.Array, amqpMessage.Properties.UserId.Offset, amqpMessage.Properties.UserId.Count) }); } } return(null); } catch (Exception exception) { Logging.Error(this, exception, nameof(ReceiveAsync)); if (exception.IsFatal()) { throw; } throw AmqpClientHelper.ToIotHubClientContract(exception); } finally { Logging.Exit(this, nameof(ReceiveAsync)); } }
public override async Task <FileNotification> ReceiveAsync(CancellationToken cancellationToken) { Logging.Enter(this, nameof(ReceiveAsync)); try { cancellationToken.ThrowIfCancellationRequested(); ReceivingAmqpLink receivingLink = await _faultTolerantReceivingLink.GetReceivingLinkAsync().ConfigureAwait(false); AmqpMessage amqpMessage = await receivingLink.ReceiveMessageAsync(cancellationToken).ConfigureAwait(false); Logging.Info(this, $"Message received is [{amqpMessage}]", nameof(ReceiveAsync)); if (amqpMessage != null) { using (amqpMessage) { AmqpClientHelper.ValidateContentType(amqpMessage, CommonConstants.FileNotificationContentType); FileNotification fileNotification = await AmqpClientHelper.GetObjectFromAmqpMessageAsync <FileNotification>(amqpMessage).ConfigureAwait(false); fileNotification.LockToken = new Guid(amqpMessage.DeliveryTag.Array).ToString(); return(fileNotification); } } return(null); } catch (Exception exception) { Logging.Error(this, exception, nameof(ReceiveAsync)); if (exception.IsFatal()) { throw; } throw AmqpClientHelper.ToIotHubClientContract(exception); } finally { Logging.Exit(this, nameof(ReceiveAsync)); } }
public override async Task <FeedbackBatch> ReceiveAsync(TimeSpan timeout) { try { ReceivingAmqpLink receivingLink = await faultTolerantReceivingLink.GetReceivingLinkAsync().ConfigureAwait(false); AmqpMessage amqpMessage = await receivingLink.ReceiveMessageAsync(timeout).ConfigureAwait(false); if (amqpMessage != null) { using (amqpMessage) { AmqpClientHelper.ValidateContentType(amqpMessage, CommonConstants.BatchedFeedbackContentType); var records = await AmqpClientHelper.GetObjectFromAmqpMessageAsync <IEnumerable <FeedbackRecord> >(amqpMessage).ConfigureAwait(false); return(new FeedbackBatch { EnqueuedTime = (DateTime)amqpMessage.MessageAnnotations.Map[MessageSystemPropertyNames.EnqueuedTime], LockToken = new Guid(amqpMessage.DeliveryTag.Array).ToString(), Records = records, UserId = Encoding.UTF8.GetString(amqpMessage.Properties.UserId.Array, amqpMessage.Properties.UserId.Offset, amqpMessage.Properties.UserId.Count) }); } } return(null); } catch (Exception exception) { if (exception.IsFatal()) { throw; } throw AmqpClientHelper.ToIotHubClientContract(exception); } }