IOTHUB_CLIENT_RESULT IoTHubTransportMqtt_SetOption(TRANSPORT_HANDLE handle, const char* option, const void* value) { /* Codes_SRS_IOTHUB_MQTT_TRANSPORT_07_021: [If any parameter is NULL then IoTHubTransportMqtt_SetOption shall return IOTHUB_CLIENT_INVALID_ARG.] */ IOTHUB_CLIENT_RESULT result; if ( (handle == NULL) || (option == NULL) || (value == NULL) ) { result = IOTHUB_CLIENT_INVALID_ARG; LogError("invalid parameter (NULL) passed to clientTransportAMQP_SetOption\r\n"); } else { /* Codes_SRS_IOTHUB_MQTT_TRANSPORT_07_031: [If the option parameter is set to "logtrace" then the value shall be a bool_ptr and the value will determine if the mqtt client log is on or off.] */ if (strcmp("logtrace", option) == 0) { MQTTTRANSPORT_HANDLE_DATA* transportState = (MQTTTRANSPORT_HANDLE_DATA*)handle; bool* traceVal = (bool*)value; mqtt_client_set_trace(transportState->mqttClient, *traceVal, *traceVal); result = IOTHUB_CLIENT_OK; } else { /* Codes_SRS_IOTHUB_MQTT_TRANSPORT_07_032: [IoTHubTransportMqtt_SetOption shall return IOTHUB_CLIENT_INVALID_ARG if the option parameter is not a known option string*] */ result = IOTHUB_CLIENT_INVALID_ARG; } } return result; }
IOTHUB_CLIENT_RESULT IoTHubTransportMqtt_SetOption(TRANSPORT_HANDLE handle, const char* option, const void* value) { /* Codes_SRS_IOTHUB_MQTT_TRANSPORT_07_021: [If any parameter is NULL then IoTHubTransportMqtt_SetOption shall return IOTHUB_CLIENT_INVALID_ARG.] */ IOTHUB_CLIENT_RESULT result; if ( (handle == NULL) || (option == NULL) || (value == NULL) ) { result = IOTHUB_CLIENT_INVALID_ARG; LogError("invalid parameter (NULL) passed to clientTransportAMQP_SetOption\r\n"); } else { MQTTTRANSPORT_HANDLE_DATA* transportState = (MQTTTRANSPORT_HANDLE_DATA*)handle; /* Codes_SRS_IOTHUB_MQTT_TRANSPORT_07_031: [If the option parameter is set to "logtrace" then the value shall be a bool_ptr and the value will determine if the mqtt client log is on or off.] */ if (strcmp("logtrace", option) == 0) { bool* traceVal = (bool*)value; mqtt_client_set_trace(transportState->mqttClient, *traceVal, *traceVal); result = IOTHUB_CLIENT_OK; } else if (strcmp("keepalive", option) == 0) { /* Codes_SRS_IOTHUB_MQTT_TRANSPORT_07_036: [If the option parameter is set to "keepalive" then the value shall be a int_ptr and the value will determine the mqtt keepalive time that is set for pings.] */ int* keepAliveOption = (int*)value; /* Codes_SRS_IOTHUB_MQTT_TRANSPORT_07_037 : [If the option parameter is set to supplied int_ptr keepalive is the same value as the existing keepalive then IoTHubTransportMqtt_SetOption shall do nothing.] */ if (*keepAliveOption != transportState->keepAliveValue) { transportState->keepAliveValue = *keepAliveOption; if (transportState->connected) { /* Codes_SRS_IOTHUB_MQTT_TRANSPORT_07_038: [If the client is connected when the keepalive is set then IoTHubTransportMqtt_SetOption shall disconnect and reconnect with the specified keepalive value.] */ DisconnectFromClient(transportState); } } result = IOTHUB_CLIENT_OK; } else { /* Codes_SRS_IOTHUB_MQTT_TRANSPORT_07_032: [IoTHubTransportMqtt_SetOption shall return IOTHUB_CLIENT_INVALID_ARG if the option parameter is not a known option string*] */ result = IOTHUB_CLIENT_INVALID_ARG; } } return result; }
static int create_connection(PROV_TRANSPORT_MQTT_INFO* mqtt_info) { int result; MQTT_CLIENT_OPTIONS options = { 0 }; char* username_info; if ((username_info = construct_username(mqtt_info)) == NULL) { LogError("Failure creating username info"); result = __FAILURE__; } else if (construct_transport(mqtt_info)) { LogError("Failure constructing transport"); free(username_info); result = __FAILURE__; } else { (void)mqtt_client_set_trace(mqtt_info->mqtt_client, mqtt_info->log_trace, false); options.username = username_info; options.clientId = mqtt_info->registration_id; options.useCleanSession = 1; options.log_trace = mqtt_info->log_trace; options.qualityOfServiceValue = DELIVER_AT_LEAST_ONCE; if (mqtt_client_connect(mqtt_info->mqtt_client, mqtt_info->transport_io, &options) != 0) { xio_destroy(mqtt_info->transport_io); mqtt_info->transport_io = NULL; LogError("Failure connecting to mqtt server"); result = __FAILURE__; } else { result = 0; } free(username_info); } return result; }
int prov_transport_common_mqtt_set_trace(PROV_DEVICE_TRANSPORT_HANDLE handle, bool trace_on) { int result; if (handle == NULL) { /* Tests_PROV_TRANSPORT_MQTT_COMMON_07_023: [ If handle is NULL, prov_transport_common_mqtt_set_trace shall return a non-zero value. ] */ LogError("Invalid parameter specified handle: %p", handle); result = __FAILURE__; } else { PROV_TRANSPORT_MQTT_INFO* mqtt_info = (PROV_TRANSPORT_MQTT_INFO*)handle; /* Tests_PROV_TRANSPORT_MQTT_COMMON_07_024: [ prov_transport_common_mqtt_set_trace shall set the log_trace variable to trace_on. ]*/ mqtt_info->log_trace = trace_on; if (mqtt_info->mqtt_client != NULL) { /* Tests_PROV_TRANSPORT_MQTT_COMMON_07_059: [ If the umqtt connection is not NULL, prov_transport_common_mqtt_set_trace shall set the trace option on that connection. ] */ mqtt_client_set_trace(mqtt_info->mqtt_client, mqtt_info->log_trace, false); } result = 0; } return result; }