From 57dfd75231ef8eb9c4c9ce28ea6e9ddfcd6e35eb Mon Sep 17 00:00:00 2001 From: Armin Novak Date: Wed, 18 Feb 2026 10:01:44 +0100 Subject: [PATCH] [winpr,utils] add MessageQueue_Capacity --- winpr/include/winpr/collections.h | 15 +++++++++++++++ winpr/libwinpr/utils/collections/MessageQueue.c | 9 +++++++++ 2 files changed, 24 insertions(+) diff --git a/winpr/include/winpr/collections.h b/winpr/include/winpr/collections.h index 3a7ee7b38..7d5edf1bf 100644 --- a/winpr/include/winpr/collections.h +++ b/winpr/include/winpr/collections.h @@ -727,8 +727,23 @@ extern "C" WINPR_API wObject* MessageQueue_Object(wMessageQueue* queue); WINPR_API HANDLE MessageQueue_Event(wMessageQueue* queue); WINPR_API BOOL MessageQueue_Wait(wMessageQueue* queue); + + /** @brief return the currently used number of elements in the queue + * + * @param queue A pointer to the queue to query. Must not be \b NULL + * + * @return The number of elements in the queue + */ WINPR_API size_t MessageQueue_Size(wMessageQueue* queue); + /** @brief return the currently allocated elements in the queue + * + * @param queue A pointer to the queue to query. Must not be \b NULL + * + * @return The number of currently allocated elements in the queue + */ + WINPR_API size_t MessageQueue_Capacity(wMessageQueue* queue); + WINPR_API BOOL MessageQueue_Dispatch(wMessageQueue* queue, const wMessage* message); WINPR_API BOOL MessageQueue_Post(wMessageQueue* queue, void* context, UINT32 type, void* wParam, void* lParam); diff --git a/winpr/libwinpr/utils/collections/MessageQueue.c b/winpr/libwinpr/utils/collections/MessageQueue.c index ca163dba8..95729cd6f 100644 --- a/winpr/libwinpr/utils/collections/MessageQueue.c +++ b/winpr/libwinpr/utils/collections/MessageQueue.c @@ -77,6 +77,15 @@ size_t MessageQueue_Size(wMessageQueue* queue) return ret; } +size_t MessageQueue_Capacity(wMessageQueue* queue) +{ + WINPR_ASSERT(queue); + EnterCriticalSection(&queue->lock); + const size_t ret = queue->capacity; + LeaveCriticalSection(&queue->lock); + return ret; +} + /** * Methods */