From 5854093bd0622c03576e7a29205d68bbdc264f62 Mon Sep 17 00:00:00 2001 From: wangzhengquan <wangzhengquan85@126.com> Date: 星期四, 09 七月 2020 16:10:20 +0800 Subject: [PATCH] void queue wrapper --- queue/include/shm_queue_wrapper.h | 97 +++++++----------------------------------------- 1 files changed, 14 insertions(+), 83 deletions(-) diff --git a/queue/include/shm_queue_wrapper.h b/queue/include/shm_queue_wrapper.h index ff918b6..1ceac9d 100644 --- a/queue/include/shm_queue_wrapper.h +++ b/queue/include/shm_queue_wrapper.h @@ -10,16 +10,7 @@ extern "C" { #endif -#define MAX_ELE_SIZE 512 - -typedef struct ele_t { - char buf[MAX_ELE_SIZE]; -} ele_t; - -typedef struct shmqueue_t { - size_t ele_size; - void *mqueue; -} shmqueue_t; + /** * 鍒濆鍖� @@ -28,114 +19,54 @@ * @ queue_size 闃熷垪澶у皬 * @ ele_size 闃熷垪涓厓绱犲ぇ灏� */ -inline void shmqueue_init(shmqueue_t *shmqueue, int key, int queue_size, int ele_size) { - if(ele_size > MAX_ELE_SIZE) { - err_exit(0, "shmqueue_init 鍏冪礌澶у皬瓒呰繃璁捐鐨勬渶澶уぇ灏�"); - } - SHMQueue<ele_t> *queue = new SHMQueue<ele_t>(key, queue_size); - shmqueue->mqueue = (void *)queue; - shmqueue->ele_size = ele_size; -} - - - +void* shmqueue_init(int key, int queue_size, int ele_size); /** * 閿�姣� */ -inline void shmqueue_destroy(shmqueue_t *shmqueue) { - delete (SHMQueue<ele_t> *)shmqueue->mqueue; -} - +void shmqueue_destroy(void *shmqueue); /** * 闃熷垪鍏冪礌鐨勪釜鏁� */ -inline uint32_t shmqueue_size(shmqueue_t *shmqueue) { - return ((SHMQueue<ele_t> *)(shmqueue->mqueue))->size(); -} - +uint32_t shmqueue_size(void *shmqueue); /** * 鏄惁宸叉弧 */ -inline int shmqueue_full(shmqueue_t *shmqueue) { - return ((SHMQueue<ele_t> *)(shmqueue->mqueue))->full(); -} +int shmqueue_full(void *shmqueue); /** * 鏄惁涓虹┖ */ -inline int shmqueue_empty(shmqueue_t *shmqueue) { - return ((SHMQueue<ele_t> *)(shmqueue->mqueue))->empty(); -} +int shmqueue_empty(void *shmqueue); /** * 鍏ラ槦, 闃熷垪婊℃椂绛夊緟 */ -inline int shmqueue_push(shmqueue_t *shmqueue, void *src_ele) { - ele_t dest_ele; - memcpy(&dest_ele.buf, src_ele, shmqueue->ele_size); - return ((SHMQueue<ele_t> *)(shmqueue->mqueue))->push(dest_ele); -} +int shmqueue_push(void *shmqueue, void *src_ele); /** * 鍏ラ槦, 闃熷垪婊℃椂绔嬪嵆杩斿洖 */ -inline int shmqueue_push_nowait(shmqueue_t *shmqueue, void *src_ele) { - ele_t dest_ele; - memcpy(&dest_ele.buf, src_ele, shmqueue->ele_size); - return ((SHMQueue<ele_t> *)(shmqueue->mqueue))->push_nowait(dest_ele); -} +int shmqueue_push_nowait(void *shmqueue, void *src_ele); /** - * 鍏ラ槦, 鎸囧畾鏃堕棿鍐呭叆瀵逛笉鎴愬姛灏辫繑鍥� + * 鍏ラ槦, 鎸囧畾鏃堕棿鍐呭叆闃熶笉鎴愬姛灏辫繑鍥� */ -inline int shmqueue_push_timeout(shmqueue_t *shmqueue, void *src_ele, struct timespec * timeout) { - ele_t dest_ele; - memcpy(&dest_ele.buf, src_ele, shmqueue->ele_size); - return ((SHMQueue<ele_t> *)(shmqueue->mqueue))->push_timeout(dest_ele, timeout); -} +int shmqueue_push_timeout(void *shmqueue, void *src_ele, struct timespec * timeout); /** * 鍑洪槦, 闃熷垪绌烘椂绛夊緟 */ -inline int shmqueue_pop(shmqueue_t *shmqueue, void *dest_ele) { - ele_t src_ele; - bool rv = ((SHMQueue<ele_t> *)(shmqueue->mqueue))->pop(src_ele); - if (rv) { - memcpy(dest_ele, &src_ele.buf, shmqueue->ele_size); - return 1; - } else { - return 0; - } - -} +int shmqueue_pop(void *shmqueue, void *dest_ele); /** * 鍑洪槦, 闃熷垪绌烘椂绔嬪嵆杩斿洖 */ -inline int shmqueue_pop_nowait(shmqueue_t *shmqueue, void *dest_ele) { - ele_t src_ele; - bool rv = ((SHMQueue<ele_t> *)(shmqueue->mqueue))->pop_nowait(src_ele); - if (rv) { - memcpy(dest_ele, &src_ele.buf, shmqueue->ele_size); - return 1; - } else { - return 0; - } -} +int shmqueue_pop_nowait(void *shmqueue, void *dest_ele); /** - * 鍑洪槦, 鎸囧畾鏃堕棿鍐呭嚭瀵逛笉鎴愬姛灏辫繑鍥� + * 鍑洪槦, 鎸囧畾鏃堕棿鍐呭嚭闃熶笉鎴愬姛灏辫繑鍥� */ -inline int shmqueue_pop_timeout(shmqueue_t *shmqueue, void *dest_ele, struct timespec * timeout) { - ele_t src_ele; - bool rv = ((SHMQueue<ele_t> *)(shmqueue->mqueue))->pop_timeout(src_ele, timeout); - if (rv) { - memcpy(dest_ele, &src_ele.buf, shmqueue->ele_size); - return 1; - } else { - return 0; - } -} +int shmqueue_pop_timeout(void *shmqueue, void *dest_ele, struct timespec * timeout); -- Gitblit v1.8.0