private void OnDeviceMessageReceived(AmqpMessage amqpMessage) { if (Logging.IsEnabled) { Logging.Enter(this, amqpMessage, nameof(OnDeviceMessageReceived)); } try { Message message = null; if (amqpMessage != null) { message = AmqpIotMessageConverter.AmqpMessageToMessage(amqpMessage); message.LockToken = new Guid(amqpMessage.DeliveryTag.Array).ToString(); } _onDeviceMessageReceived?.Invoke(message); } finally { if (Logging.IsEnabled) { Logging.Exit(this, amqpMessage, nameof(OnDeviceMessageReceived)); } } }
internal async Task <Message> ReceiveAmqpMessageAsync(CancellationToken cancellationToken) { if (Logging.IsEnabled) { Logging.Enter(this, nameof(ReceiveAmqpMessageAsync)); } try { AmqpMessage amqpMessage = await _receivingAmqpLink.ReceiveMessageAsync(cancellationToken).ConfigureAwait(false); Message message = null; if (amqpMessage != null) { message = AmqpIotMessageConverter.AmqpMessageToMessage(amqpMessage); message.LockToken = new Guid(amqpMessage.DeliveryTag.Array).ToString(); } return(message); } catch (Exception e) when(!e.IsFatal()) { Exception ex = AmqpIotExceptionAdapter.ConvertToIotHubException(e, _receivingAmqpLink); if (ReferenceEquals(e, ex)) { throw; } else { if (ex is AmqpIotResourceException) { _receivingAmqpLink.SafeClose(); throw new IotHubCommunicationException(ex.Message, ex); } throw ex; } } finally { if (Logging.IsEnabled) { Logging.Exit(this, nameof(ReceiveAmqpMessageAsync)); } } }