AlteriomPainlessMesh v2.1.1
Easy ESP32/ESP8266 mesh networking with Alteriom IoT extensions
Loading...
Searching...
No Matches
Public Member Functions | List of all members
painlessmesh::MessageQueue Class Reference

#include <message_queue.hpp>

Public Member Functions

 MessageQueue (uint32_t maxSize=1000)
 
uint32_t enqueue (MessagePriority priority, const TSTRING &payload, const TSTRING &destination="")
 
bool remove (uint32_t messageId)
 
std::vector< QueuedMessage > getMessages () const
 
uint32_t size () const
 
uint32_t size (MessagePriority priority) const
 
bool empty () const
 
void clear ()
 
QueueStats getStats () const
 
void onStateChanged (queueStateChangedCallback_t callback)
 
uint32_t incrementAttempts (uint32_t messageId)
 
uint32_t pruneOldMessages (uint32_t maxAgeMs)
 

Detailed Description

Manual priority buffer for offline / Internet-unavailable mode

This is a storage container only. It does NOT transmit anything on its own: painlessMesh will not enqueue, flush, or deliver messages automatically, and there is no connectivity-restored trigger inside the library. The application owns the send loop — enqueue when your upstream (MQTT/HTTP/etc.) is down, drain via getMessages() / mesh.flushMessageQueue() and remove() / mesh.removeQueuedMessage() when your own connectivity check tells you it is safe to resend.

Provides priority-based message queueing with support for:

Example usage:

MessageQueue queue(1000); // Max 1000 messages
// Queue a critical message while upstream is offline
uint32_t msgId = queue.enqueue(PRIORITY_CRITICAL, "alarm_data", "mqtt://...");
// Get queue size
uint32_t size = queue.size();
// When your app detects the upstream is back, drain manually:
auto messages = queue.getMessages();
for (auto& msg : messages) {
if (sendToCloud(msg.payload, msg.destination)) {
queue.remove(msg.id);
}
}
Definition message_queue.hpp:112
uint32_t size() const
Definition message_queue.hpp:200
@ PRIORITY_CRITICAL
Definition message_queue.hpp:19

Constructor & Destructor Documentation

◆ MessageQueue()

painlessmesh::MessageQueue::MessageQueue ( uint32_t  maxSize = 1000)
inlineexplicit

Constructor

Parameters
maxSizeMaximum number of messages in queue

Member Function Documentation

◆ clear()

void painlessmesh::MessageQueue::clear ( )
inline

Clear all messages from queue

◆ empty()

bool painlessmesh::MessageQueue::empty ( ) const
inline

Check if queue is empty

Returns
true if no messages queued

◆ enqueue()

uint32_t painlessmesh::MessageQueue::enqueue ( MessagePriority  priority,
const TSTRING &  payload,
const TSTRING &  destination = "" 
)
inline

Enqueue a message with priority

Parameters
priorityMessage priority level
payloadMessage content
destinationOptional destination metadata
Returns
Message ID if queued, 0 if dropped

◆ getMessages()

std::vector< QueuedMessage > painlessmesh::MessageQueue::getMessages ( ) const
inline

Get all queued messages

Returns
Vector of queued messages (ordered by timestamp)

◆ getStats()

QueueStats painlessmesh::MessageQueue::getStats ( ) const
inline

Get queue statistics

Returns
QueueStats structure

◆ incrementAttempts()

uint32_t painlessmesh::MessageQueue::incrementAttempts ( uint32_t  messageId)
inline

Increment send attempt counter for a message

Parameters
messageIdID of message
Returns
New attempt count, or 0 if message not found

◆ onStateChanged()

void painlessmesh::MessageQueue::onStateChanged ( queueStateChangedCallback_t  callback)
inline

Set queue state change callback

Parameters
callbackFunction to call when queue state changes

◆ pruneOldMessages()

uint32_t painlessmesh::MessageQueue::pruneOldMessages ( uint32_t  maxAgeMs)
inline

Remove old messages (for queue pruning)

Parameters
maxAgeMsMaximum age in milliseconds
Returns
Number of messages removed

◆ remove()

bool painlessmesh::MessageQueue::remove ( uint32_t  messageId)
inline

Remove a message from the queue

Parameters
messageIdID of message to remove
Returns
true if message was found and removed

◆ size() [1/2]

uint32_t painlessmesh::MessageQueue::size ( ) const
inline

Get current queue size

Returns
Number of messages in queue

◆ size() [2/2]

uint32_t painlessmesh::MessageQueue::size ( MessagePriority  priority) const
inline

Get count of messages with specific priority

Parameters
priorityPriority level to count
Returns
Number of messages with that priority

The documentation for this class was generated from the following file: