From e0aea3742aed09a0a9ed384ccd7db203b6efc650 Mon Sep 17 00:00:00 2001
From: wangzhengquan <wangzhengquan85@126.com>
Date: 星期六, 20 二月 2021 14:43:52 +0800
Subject: [PATCH] update

---
 src/shm/shm_mm_wrapper.cpp |   34 ++++++++++++++++++++++++++++++++--
 1 files changed, 32 insertions(+), 2 deletions(-)

diff --git a/src/shm/shm_mm_wrapper.cpp b/src/shm/shm_mm_wrapper.cpp
index 59487c6..f726f8a 100644
--- a/src/shm/shm_mm_wrapper.cpp
+++ b/src/shm/shm_mm_wrapper.cpp
@@ -5,18 +5,48 @@
 #include "shm_socket.h"
 
 #define BUFFER_TIME 10
+
+
 void shm_mm_wrapper_init(int size) {
-	mem_pool_init(size);
+	shm_mm_init(size);
+
 }
 
 void shm_mm_wrapper_destroy() {
-	mem_pool_destroy();
+	shm_mm_destroy();
 }
 
 int shm_mm_wrapper_alloc_key() {
 	return mm_alloc_key();
 }
 
+
+/**
+ * 鍥炴敹鍋囧垹闄ょ殑key
+ */
+int shm_mm_wrapper_start_resycle() {
+  ShmQueueStMap * shmQueueStMap =  shm_mm_attach<ShmQueueStMap>(SHM_QUEUE_ST_KEY);
+  hashtable_t *hashtable = mm_get_hashtable();
+  LockFreeQueue<shm_packet_t> *mqueue;
+  while(true) {
+    for(auto it = shmQueueStMap->begin(); it != shmQueueStMap->end(); ++it ) {
+      if(it->second.status = SHM_QUEUE_ST_CLOSED && difftime(time(NULL), it->second.closeTime) > 2 ) {
+        mqueue = (LockFreeQueue<shm_packet_t> *)hashtable_get(hashtable, keys[i]);
+        if(mqueue != NULL) {
+          delete mqueue;
+          hashtable_remove(hashtable, it->first);
+          printf("reove queue %d\n", it->first);
+          // 涓嶈兘 erase ,鍚﹀垯浼氬嚭鐜板杩涚▼涔嬮棿鐨勫悓姝ラ棶棰橈紝 鑰岃繖姝f槸杩欓噷瑕佽В鍐崇殑闂
+          // it = shmQueueStMap->erase(it);
+          // continue;
+        }
+      }
+    }
+
+    sleep(1);
+  }
+}
+
 //鍒犻櫎鍖呭惈鍦╧eys鍐呯殑queue
 int shm_mm_wrapper_remove_keys(int keys[], int length) {
   hashtable_t *hashtable = mm_get_hashtable();

--
Gitblit v1.8.0