source/azure_iot_message.c (72 lines of code) (raw):

/* Copyright (c) Microsoft Corporation. * Licensed under the MIT License. */ /** * @file azure_iot_message.c * * @brief Azure IoT Middleware message API implementation. * */ #include "azure_iot_message.h" /*-----------------------------------------------------------*/ AzureIoTResult_t AzureIoTMessage_PropertiesInit( AzureIoTMessageProperties_t * pxMessageProperties, uint8_t * pucBuffer, uint32_t ulAlreadyWrittenLength, uint32_t ulBufferLength ) { az_span xPropertyBufferSpan = az_span_create( pucBuffer, ( int32_t ) ulBufferLength ); az_result xResult; if( ( pxMessageProperties == NULL ) || ( pucBuffer == NULL ) ) { AZLogError( ( "AzureIoTMessage_PropertiesInit failed: Invalid argument" ) ); return eAzureIoTErrorInvalidArgument; } xResult = az_iot_message_properties_init( &pxMessageProperties->_internal.xProperties, xPropertyBufferSpan, ( int32_t ) ulAlreadyWrittenLength ); if( az_result_failed( xResult ) ) { return eAzureIoTErrorFailed; } return eAzureIoTSuccess; } /*-----------------------------------------------------------*/ AzureIoTResult_t AzureIoTMessage_PropertiesAppend( AzureIoTMessageProperties_t * pxMessageProperties, const uint8_t * pucName, uint32_t ulNameLength, const uint8_t * pucValue, uint32_t ulValueLength ) { az_span xNameSpan = az_span_create( ( uint8_t * ) pucName, ( int32_t ) ulNameLength ); az_span xValueSpan = az_span_create( ( uint8_t * ) pucValue, ( int32_t ) ulValueLength ); az_result xResult; if( ( pxMessageProperties == NULL ) || ( pucName == NULL ) || ( ulNameLength == 0 ) || ( pucValue == NULL ) || ( ulValueLength == 0 ) ) { AZLogError( ( "AzureIoTMessage_PropertiesAppend failed: Invalid argument" ) ); return eAzureIoTErrorInvalidArgument; } xResult = az_iot_message_properties_append( &pxMessageProperties->_internal.xProperties, xNameSpan, xValueSpan ); if( az_result_failed( xResult ) ) { return eAzureIoTErrorFailed; } return eAzureIoTSuccess; } /*-----------------------------------------------------------*/ AzureIoTResult_t AzureIoTMessage_PropertiesFind( AzureIoTMessageProperties_t * pxMessageProperties, const uint8_t * pucName, uint32_t ulNameLength, const uint8_t ** ppucOutValue, uint32_t * pulOutValueLength ) { az_span xNameSpan = az_span_create( ( uint8_t * ) pucName, ( int32_t ) ulNameLength ); az_span xOutValueSpan; az_result xResult; if( ( pxMessageProperties == NULL ) || ( pucName == NULL ) || ( ulNameLength == 0 ) || ( ppucOutValue == NULL ) || ( pulOutValueLength == NULL ) ) { AZLogError( ( "AzureIoTMessage_PropertiesFind failed: Invalid argument" ) ); return eAzureIoTErrorInvalidArgument; } xResult = az_iot_message_properties_find( &pxMessageProperties->_internal.xProperties, xNameSpan, &xOutValueSpan ); if( az_result_failed( xResult ) ) { return eAzureIoTErrorItemNotFound; } *ppucOutValue = az_span_ptr( xOutValueSpan ); *pulOutValueLength = ( uint32_t ) az_span_size( xOutValueSpan ); return eAzureIoTSuccess; } /*-----------------------------------------------------------*/