/* * RequestPool.cpp * * Created: 16/02/2022 20:59:03 * Author: erkim */ #include "RequestPool.h" #include #include namespace { constexpr size_t REQUEST_POOL_SIZE = 10; struct RequestWrapper { NWK_DataReq_t request; bool in_use = false; }; std::array REQUEST_POOL; } namespace RequestPool { NWK_DataReq_t* allocateRequest() { for (RequestWrapper& request: REQUEST_POOL) { if (!request.in_use) { request.in_use = true; return &request.request; } } return nullptr; } void freeRequest(NWK_DataReq_t* request) { for (RequestWrapper& req_wrapper: REQUEST_POOL) { if (&req_wrapper.request == request) { req_wrapper.in_use = false; return; } } } }