in source/core_mqtt_agent_command_functions.c [57:84]
MQTTStatus_t MQTTAgentCommand_Publish( MQTTAgentContext_t * pMqttAgentContext,
void * pPublishArg,
MQTTAgentCommandFuncReturns_t * pReturnFlags )
{
const MQTTPublishInfo_t * pPublishInfo;
MQTTStatus_t ret;
assert( pMqttAgentContext != NULL );
assert( pPublishArg != NULL );
assert( pReturnFlags != NULL );
( void ) memset( pReturnFlags, 0x00, sizeof( MQTTAgentCommandFuncReturns_t ) );
pPublishInfo = ( const MQTTPublishInfo_t * ) ( pPublishArg );
if( pPublishInfo->qos != MQTTQoS0 )
{
pReturnFlags->packetId = MQTT_GetPacketId( &( pMqttAgentContext->mqttContext ) );
}
LogInfo( ( "Publishing message to %.*s.\n", ( int ) pPublishInfo->topicNameLength, pPublishInfo->pTopicName ) );
ret = MQTT_Publish( &( pMqttAgentContext->mqttContext ), pPublishInfo, pReturnFlags->packetId );
/* Add to pending ack list, or call callback if QoS 0. */
pReturnFlags->addAcknowledgment = ( pPublishInfo->qos != MQTTQoS0 ) && ( ret == MQTTSuccess );
pReturnFlags->runProcessLoop = true;
return ret;
}