in src/mqtt_codec.c [650:712]
BUFFER_HANDLE mqtt_codec_connect(const MQTT_CLIENT_OPTIONS* mqttOptions, STRING_HANDLE trace_log)
{
BUFFER_HANDLE result;
/* Codes_SRS_MQTT_CODEC_07_008: [If the parameters mqttOptions is NULL then mqtt_codec_connect shall return a null value.] */
if (mqttOptions == NULL)
{
result = NULL;
}
else
{
/* Codes_SRS_MQTT_CODEC_07_009: [mqtt_codec_connect shall construct a BUFFER_HANDLE that represents a MQTT CONNECT packet.] */
result = BUFFER_new();
if (result != NULL)
{
STRING_HANDLE varible_header_log = NULL;
if (trace_log != NULL)
{
varible_header_log = STRING_new();
}
// Add Variable Header Information
if (constructConnectVariableHeader(result, mqttOptions, varible_header_log) != 0)
{
/* Codes_SRS_MQTT_CODEC_07_010: [If any error is encountered then mqtt_codec_connect shall return NULL.] */
BUFFER_delete(result);
result = NULL;
}
else
{
if (constructConnPayload(result, mqttOptions, varible_header_log) != 0)
{
/* Codes_SRS_MQTT_CODEC_07_010: [If any error is encountered then mqtt_codec_connect shall return NULL.] */
BUFFER_delete(result);
result = NULL;
}
else
{
if (trace_log != NULL)
{
(void)STRING_copy(trace_log, "CONNECT");
}
if (constructFixedHeader(result, CONNECT_TYPE, 0) != 0)
{
/* Codes_SRS_MQTT_CODEC_07_010: [If any error is encountered then mqtt_codec_connect shall return NULL.] */
BUFFER_delete(result);
result = NULL;
}
else
{
if (trace_log != NULL)
{
(void)STRING_concat_with_STRING(trace_log, varible_header_log);
}
}
}
if (varible_header_log != NULL)
{
STRING_delete(varible_header_log);
}
}
}
}
return result;
}