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