1#ifndef _LORAMESHER_PACKET_QUEUE_SERVICE_H 
    2#define _LORAMESHER_PACKET_QUEUE_SERVICE_H 
    8#include "entities/packets/QueuePacket.h" 
   10#include "services/PacketService.h" 
   12#include "utilities/LinkedQueue.hpp" 
   14class PacketQueueService {
 
   27    static QueuePacket<T>* createQueuePacket(T* p, uint8_t priority, uint16_t number = 0) {
 
   28        QueuePacket<T>* qp = 
new QueuePacket<T>();
 
   29        qp->priority = priority;
 
   44    static QueuePacket<T>* findPacketQueue(LM_LinkedList<QueuePacket<T>>* queue, uint8_t num) {
 
   47        if (queue->moveToStart()) {
 
   49                QueuePacket<T>* current = queue->getCurrent();
 
   51                if (current->number == num) {
 
   52                    queue->releaseInUse();
 
   56            } 
while (queue->next());
 
   59        queue->releaseInUse();
 
   70    static void addOrdered(LM_LinkedList<QueuePacket<Packet<uint8_t>>>* list, QueuePacket<Packet<uint8_t>>* qp);
 
   77    static void deleteQueuePacketAndPacket(QueuePacket<Packet<uint8_t>>* pq) {
 
   78        Log.traceln(F(
"Deleting packet"));
 
   81        Log.traceln(F(
"Deleting packet queue"));
 
   92    static void deleteQueuePacketAndPacket(QueuePacket<T>* pq) {
 
   93        deleteQueuePacketAndPacket(
reinterpret_cast<QueuePacket<Packet<uint8_t>
>*>(pq));