in iothub/device/iot-device-client/src/main/java/com/microsoft/azure/sdk/iot/device/twin/DeviceTwin.java [57:114]
public void getTwinAsync(
GetTwinCorrelatingMessageCallback twinCallback,
Object callbackContext)
{
if (desiredPropertiesCallback == null)
{
throw new IllegalStateException("Must subscribe to desired properties before getting twin.");
}
Objects.requireNonNull(twinCallback, "Must provide a non-null callback for receiving the twin");
IotHubTransportMessage getTwinRequestMessage = new IotHubTransportMessage(new byte[0], MessageType.DEVICE_TWIN);
getTwinRequestMessage.setRequestId(UUID.randomUUID().toString());
getTwinRequestMessage.setCorrelationId(getTwinRequestMessage.getRequestId());
getTwinRequestMessage.setDeviceOperationType(DeviceOperations.DEVICE_OPERATION_TWIN_GET_REQUEST);
getTwinRequestMessage.setCorrelatingMessageCallback(new CorrelatingMessageCallback()
{
@Override
public void onRequestQueued(Message message, Object callbackContext)
{
twinCallback.onRequestQueued(message, callbackContext);
}
@Override
public void onRequestSent(Message message, Object callbackContext)
{
twinCallback.onRequestSent(message, callbackContext);
}
@Override
public void onRequestAcknowledged(Message message, Object callbackContext, IotHubClientException e)
{
twinCallback.onRequestAcknowledged(message, callbackContext, e);
}
@Override
public void onResponseReceived(Message message, Object callbackContext, IotHubClientException e)
{
int status = Integer.parseInt(((IotHubTransportMessage) message).getStatus());
Twin twin = Twin.createFromPropertiesJson(new String(message.getBytes(), Message.DEFAULT_IOTHUB_MESSAGE_CHARSET));
twinCallback.onResponseReceived(twin, message, callbackContext, IotHubStatusCode.getIotHubStatusCode(status), e);
}
@Override
public void onResponseAcknowledged(Message message, Object callbackContext)
{
twinCallback.onResponseAcknowledged(message, callbackContext);
}
});
getTwinRequestMessage.setCorrelatingMessageCallbackContext(callbackContext);
MessageSentCallback onMessageAcknowledgedCallback = (responseStatus, exception, context) ->
{
// no action needed here. The correlating message callback will handle the various message state callbacks including this one
};
this.client.sendEventAsync(getTwinRequestMessage, onMessageAcknowledgedCallback,null);
}