1#ifndef ESP8266NDN_PORT_QUEUE_FREERTOS_HPP
2#define ESP8266NDN_PORT_QUEUE_FREERTOS_HPP
9#include <freertos/FreeRTOS.h>
10#include <freertos/queue.h>
13namespace ndnph_port_freertos {
16template<
typename T,
size_t capacity>
20 static_assert(std::is_trivially_copyable<Item>::value,
"");
21 static_assert(std::is_trivially_destructible<Item>::value,
"");
24 m_queue = xQueueCreate(capacity,
sizeof(
Item));
28 vQueueDelete(m_queue);
32 BaseType_t res = xQueueSendToBack(m_queue, &item, 0);
36 std::tuple<Item, bool>
pop() {
38 BaseType_t res = xQueueReceive(m_queue, &item, 0);
39 return std::make_tuple(std::move(item), res == pdTRUE);
43 QueueHandle_t m_queue;
49#ifdef ESP8266NDN_PORT_QUEUE_FREERTOS
52template<
typename T,
size_t capacity>
Generic thread-safe queue, implemented with FreeRTOS queue API.
Definition queue-freertos.hpp:17
~SafeQueue()
Definition queue-freertos.hpp:27
T Item
Definition queue-freertos.hpp:19
SafeQueue()
Definition queue-freertos.hpp:23
bool push(Item item)
Definition queue-freertos.hpp:31
std::tuple< Item, bool > pop()
Definition queue-freertos.hpp:36
Definition autoconfig.hpp:24