MQTTStatus_t MQTTAgentCommand_Publish()

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;
}