*/
u_queue_message_t *u_queue_get_head(u_queue_t *queue);
+/** Data destroy function. **/
+typedef void (*QueueDataDestroyFunction)(void *data, uint32_t size);
+typedef bool (*QueueContextDataDestroy)(void *data, uint32_t size, void *ctx);
+
+/**
+ * Removes messages from anywhere in the queue
+ * @param queue pointer to queue
+ * @param callback Function returns true if element is to be destroyed
+ * @param ctx data that should be passed to callback
+ * @param destroy Function to destroy the data, if NULL OICFree will be used
+ * @return ::CA_STATUS_OK if Success, ::CA_STATUS_FAILED otherwise
+ */
+CAResult_t u_queue_remove_req_elements(u_queue_t *queue,
+ QueueContextDataDestroy callback, void *ctx,
+ QueueDataDestroyFunction destroy);
+
#ifdef __cplusplus
} /* extern "C" */
#endif /* __cplusplus */