/////////////////////////////////////////////////////////////////////////////////////////////////// // This function "links" IoTHub to the serialization library. static IOTHUBMESSAGE_DISPOSITION_RESULT IoTHubMessage(IOTHUB_MESSAGE_HANDLE message, void* userContextCallback) { IOTHUBMESSAGE_DISPOSITION_RESULT result; const unsigned char* buffer; size_t size; if (IoTHubMessage_GetByteArray(message, &buffer, &size) != IOTHUB_MESSAGE_OK) { printf("unable to IoTHubMessage_GetByteArray\r\n"); result = EXECUTE_COMMAND_ERROR; } else { // Buffer is not zero terminated char* temp = malloc(size + 1); if (temp == NULL) { printf("failed to malloc\r\n"); result = EXECUTE_COMMAND_ERROR; } else { memcpy(temp, buffer, size); temp[size] = '\0'; EXECUTE_COMMAND_RESULT executeCommandResult = EXECUTE_COMMAND(userContextCallback, temp); result = (executeCommandResult == EXECUTE_COMMAND_ERROR) ? IOTHUBMESSAGE_ABANDONED : (executeCommandResult == EXECUTE_COMMAND_SUCCESS) ? IOTHUBMESSAGE_ACCEPTED : IOTHUBMESSAGE_REJECTED; free(temp); } } return result; }
/*this function "links" IoTHub to the serialization library*/ static IOTHUBMESSAGE_DISPOSITION_RESULT IoTHubMessage(IOTHUB_MESSAGE_HANDLE message, void* userContextCallback) { const unsigned char* buffer; size_t size; if (IoTHubMessage_GetByteArray(message, &buffer, &size) != IOTHUB_MESSAGE_OK) { ASSERT_FAIL("unable to IoTHubMessage_GetByteArray"); } else { /*buffer is not zero terminated*/ char* buffer_string = (char*)malloc(size+1); ASSERT_IS_NOT_NULL(buffer_string); if (memcpy(buffer_string, buffer, size) == 0) { ASSERT_FAIL("memcpy failed for buffer"); } else { buffer_string[size] = '\0'; EXECUTE_COMMAND(userContextCallback, buffer_string); } free(buffer_string); } return IOTHUBMESSAGE_ACCEPTED; }
/*this function "links" IoTHub to the serialization library*/ static IOTHUBMESSAGE_DISPOSITION_RESULT IoTHubMessage(IOTHUB_MESSAGE_HANDLE message, void* userContextCallback) { const unsigned char* buffer; size_t size; if (IoTHubMessage_GetByteArray(message, &buffer, &size) != IOTHUB_MESSAGE_OK) { (void)printf("unable to IoTHubMessage_GetByteArray\r\n"); } else { /*buffer is not zero terminated*/ char* temp = malloc(size + 1); if (temp == NULL) { (void)printf("failed to malloc\r\n"); } else { (void)memcpy(temp, buffer, size); temp[size] = '\0'; EXECUTE_COMMAND_RESULT executeCommandResult = EXECUTE_COMMAND(userContextCallback, temp); if (executeCommandResult != EXECUTE_COMMAND_SUCCESS) { (void)printf("Execute command failed\r\n"); } free(temp); } } // MQTT can only accept messages return IOTHUBMESSAGE_ACCEPTED; }
/*this function "links" IoTHub to the serialization library*/ static IOTHUBMESSAGE_DISPOSITION_RESULT IoTHubMessage(IOTHUB_MESSAGE_HANDLE message, void* userContextCallback) { const unsigned char* buffer; size_t size; if (IoTHubMessage_GetByteArray(message, &buffer, &size) != IOTHUB_MESSAGE_OK) { ASSERT_FAIL("unable to IoTHubMessage_GetByteArray"); } else { /*buffer is not zero terminated*/ STRING_HANDLE temp = STRING_construct_n((char*)buffer, size); ASSERT_IS_NOT_NULL(temp); EXECUTE_COMMAND(userContextCallback, STRING_c_str(temp)); STRING_delete(temp); } return IOTHUBMESSAGE_ACCEPTED; }