Serialize an MQTT PUBLISH packet header in the given buffer.
uint16_t packetId,
size_t remainingLength,
size_t * pHeaderSize );
MQTTStatus_t MQTT_SerializePublishHeader(const MQTTPublishInfo_t *pPublishInfo, uint16_t packetId, size_t remainingLength, const MQTTFixedBuffer_t *pFixedBuffer, size_t *pHeaderSize)
Serialize an MQTT PUBLISH packet header in the given buffer.
Definition: core_mqtt_serializer.c:2187
MQTTStatus_t
Return codes from MQTT functions.
Definition: core_mqtt_serializer.h:99
Buffer passed to MQTT library.
Definition: core_mqtt_serializer.h:135
MQTT PUBLISH packet parameters.
Definition: core_mqtt_serializer.h:214
This function serializes PUBLISH header in to the given buffer. The payload for PUBLISH will not be copied over to the buffer. This will help reduce the memory needed for the buffer and avoid an unwanted copy operation of the PUBLISH payload into the buffer. If the payload also would need to be part of the serialized buffer, consider using MQTT_SerializePublish.
MQTT_GetPublishPacketSize should be called with pPublishInfo
before invoking this function to get the size of the required MQTTFixedBuffer_t and remainingLength
. The remainingLength
must be the same as returned by MQTT_GetPublishPacketSize. The MQTTFixedBuffer_t must be at least as large as the size returned by MQTT_GetPublishPacketSize.
- Parameters
-
[in] | pPublishInfo | MQTT PUBLISH packet parameters. |
[in] | packetId | packet ID generated by MQTT_GetPacketId. |
[in] | remainingLength | Remaining Length provided by MQTT_GetPublishPacketSize. |
[out] | pFixedBuffer | Buffer for packet serialization. |
[out] | pHeaderSize | Size of the serialized MQTT PUBLISH header. |
- Returns
- MQTTNoMemory if pFixedBuffer is too small to hold the MQTT packet; MQTTBadParameter if invalid parameters are passed; MQTTSuccess otherwise.
Example
uint8_t buffer[ BUFFER_SIZE ];
size_t remainingLength = 0, packetSize = 0, headerSize = 0;
uint16_t packetId;
int32_t bytesSent;
fixedBuffer.
size = BUFFER_SIZE;
packetId = 0;
&publishInfo, &remainingLength, &packetSize
);
assert( ( packetSize - publishInfo.
payloadLength ) <= BUFFER_SIZE );
&publishInfo,
packetId,
remainingLength,
&fixedBuffer,
&headerSize
);
{
bytesSent = send( mqttSocket, (
void * ) fixedBuffer.
pBuffer, headerSize, 0 );
assert( bytesSent == headerSize );
}
MQTTStatus_t MQTT_GetPublishPacketSize(const MQTTPublishInfo_t *pPublishInfo, size_t *pRemainingLength, size_t *pPacketSize)
Get the packet size and remaining length of an MQTT PUBLISH packet.
Definition: core_mqtt_serializer.c:2061
@ MQTTSuccess
Definition: core_mqtt_serializer.h:100
size_t size
Size of buffer.
Definition: core_mqtt_serializer.h:137
uint8_t * pBuffer
Pointer to buffer.
Definition: core_mqtt_serializer.h:136
size_t payloadLength
Message payload length.
Definition: core_mqtt_serializer.h:248
const void * pPayload
Message payload.
Definition: core_mqtt_serializer.h:243