From af100db4697a85522893ebbffbf2de2741988265 Mon Sep 17 00:00:00 2001
From: wangzhengquan <wangzhengquan85@126.com>
Date: 星期一, 20 七月 2020 11:13:41 +0800
Subject: [PATCH] update
---
queue/include/shm_queue_wrapper.h | 129 ++++++++++++++-----------------------------
1 files changed, 42 insertions(+), 87 deletions(-)
diff --git a/queue/include/shm_queue_wrapper.h b/queue/include/shm_queue_wrapper.h
index ff918b6..33ed54f 100644
--- a/queue/include/shm_queue_wrapper.h
+++ b/queue/include/shm_queue_wrapper.h
@@ -10,134 +10,89 @@
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;
+//绉婚櫎涓嶅寘鍚湪keys涓殑闃熷垪
+void shm_remove_queues_exclue(void *keys, int length);
+/**
+ * 鍒涘缓闃熷垪
+ * @ shmqueue
+ * @ key 鏍囪瘑鍏变韩闃熷垪鐨勫敮涓�鏍囪瘑, key鏄竴涓寚閽堥噷闈㈠瓨鍌ㄤ簡key鐨勫�硷紝 濡傛灉key鐨勫�间负-1绯荤粺浼氳嚜鍔ㄥ垎閰嶄竴涓猭ey鍊煎苟鎶婅key鐨勫�艰祴缁檏ey鎸囬拡銆傚鏋渒ey鐨勫�间笉浼氱┖浼氭鏌ユ槸鍚︽湁閲嶅缁戝畾鐨勬儏鍐�, 鏈夐噸澶嶅氨鎶ラ敊娌℃湁灏卞垱寤洪槦鍒楀苟缁戝畾key.
+ * @ queue_size 闃熷垪澶у皬
+ */
+void* shmqueue_create( int * key, int queue_size);
/**
- * 鍒濆鍖�
- * @ shmqueue
- * @ key 鏍囪瘑鍏变韩闃熷垪鐨勫敮涓�key
- * @ queue_size 闃熷垪澶у皬
- * @ ele_size 闃熷垪涓厓绱犲ぇ灏�
+ * 缁戝畾key鍒伴槦鍒楋紝浣嗘槸骞朵笉浼氬垱寤洪槦鍒椼�傚鏋滄病鏈夊搴旀寚瀹歬ey鐨勯槦鍒楁彁绀洪敊璇苟閫�鍑�
*/
-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_attach(int key) ;
/**
* 閿�姣�
*/
-inline void shmqueue_destroy(shmqueue_t *shmqueue) {
- delete (SHMQueue<ele_t> *)shmqueue->mqueue;
-}
+void shmqueue_drop(void * _shmqueue);
/**
* 闃熷垪鍏冪礌鐨勪釜鏁�
*/
-inline uint32_t shmqueue_size(shmqueue_t *shmqueue) {
- return ((SHMQueue<ele_t> *)(shmqueue->mqueue))->size();
-}
+int shmqueue_size(void * _shmqueue) ;
/**
* 鏄惁宸叉弧
+ * @return 1鏄紝 0鍚�
*/
-inline int shmqueue_full(shmqueue_t *shmqueue) {
- return ((SHMQueue<ele_t> *)(shmqueue->mqueue))->full();
-}
+int shmqueue_full(void * _shmqueue);
/**
* 鏄惁涓虹┖
+ * @return 1鏄紝 0鍚�
*/
-inline int shmqueue_empty(shmqueue_t *shmqueue) {
- return ((SHMQueue<ele_t> *)(shmqueue->mqueue))->empty();
-}
+int shmqueue_empty(void * _shmqueue) ;
/**
- * 鍏ラ槦, 闃熷垪婊℃椂绛夊緟
+ * 鍏ラ槦, 闃熷垪婊℃椂绛夊緟.
+ * @return 1 鍏ラ槦鎴愬姛, 0 鍏ラ槦澶辫触
*/
-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, int size);
/**
- * 鍏ラ槦, 闃熷垪婊℃椂绔嬪嵆杩斿洖
+ * 鍏ラ槦, 闃熷垪婊℃椂绔嬪嵆杩斿洖.
+ * @return 1 鍏ラ槦鎴愬姛, 0 鍏ラ槦澶辫触
*/
-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, int size) ;
/**
- * 鍏ラ槦, 鎸囧畾鏃堕棿鍐呭叆瀵逛笉鎴愬姛灏辫繑鍥�
+ * 鍏ラ槦, 鎸囧畾鏃堕棿鍐呭叆闃熶笉鎴愬姛灏辫繑鍥�
+ * @sec 绉�
+ * @nsec 绾崇
+ * @return 1 鍏ラ槦鎴愬姛, 0 鍏ラ槦澶辫触
*/
-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, int size, int sec, int nsec) ;
/**
* 鍑洪槦, 闃熷垪绌烘椂绛夊緟
+ * @return 1 鍑洪槦鎴愬姛锛� 0鍑洪槦澶辫触
*/
-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, int *size);
/**
* 鍑洪槦, 闃熷垪绌烘椂绔嬪嵆杩斿洖
+ * @return 1 鍑洪槦鎴愬姛锛� 0鍑洪槦澶辫触
*/
-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, int *size) ;
/**
- * 鍑洪槦, 鎸囧畾鏃堕棿鍐呭嚭瀵逛笉鎴愬姛灏辫繑鍥�
+ * 鍑洪槦, 鎸囧畾鏃堕棿鍐呭嚭闃熶笉鎴愬姛灏辫繑鍥�
+ * @sec绉�
+ * @nsec绾崇
+ * @return 1 鍑洪槦鎴愬姛锛� 0鍑洪槦澶辫触
*/
-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, int *size, int sec, int nsec);
-
+/**
+ * 閲婃斁鍑洪槦鍒嗛厤鐨勫唴瀛�
+ */
+void shmqueue_free(void *ptr);
#ifdef __cplusplus
}
--
Gitblit v1.8.0