From b5ae34d4422399c5d5458d071cca8c9bc89d20bb Mon Sep 17 00:00:00 2001
From: wangzhengquan <wangzhengquan85@126.com>
Date: 星期六, 20 二月 2021 16:27:02 +0800
Subject: [PATCH] status map for close

---
 src/shm/shm_mm_wrapper.cpp |   50 +++++++++++++++++++++-----------------------------
 1 files changed, 21 insertions(+), 29 deletions(-)

diff --git a/src/shm/shm_mm_wrapper.cpp b/src/shm/shm_mm_wrapper.cpp
index f726f8a..672fadb 100644
--- a/src/shm/shm_mm_wrapper.cpp
+++ b/src/shm/shm_mm_wrapper.cpp
@@ -1,10 +1,10 @@
 #include "shm_mm_wrapper.h"
-#include "mem_pool.h"
+#include "shm_mm.h"
 #include "hashtable.h"
 #include "lock_free_queue.h"
 #include "shm_socket.h"
 
-#define BUFFER_TIME 10
+#define BUFFER_TIME 1
 
 
 void shm_mm_wrapper_init(int size) {
@@ -30,21 +30,24 @@
   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;
-        }
+      if(it->second.status == SHM_QUEUE_ST_CLOSED && difftime(time(NULL), it->second.closeTime) > BUFFER_TIME ) {
+        // mqueue = (LockFreeQueue<shm_packet_t> *)hashtable_get(hashtable, keys[i]);
+        // if(mqueue != NULL) {
+        //   delete mqueue;
+        // }
+
+        hashtable_remove(hashtable, it->first);
+        printf("reomved queue %d\n\n", it->first);
+        it->second.status = SHM_QUEUE_ST_RECYCLED;
+        // 涓嶈兘 erase ,鍚﹀垯浼氬嚭鐜板杩涚▼涔嬮棿鐨勫悓姝ラ棶棰橈紝 鑰岃繖姝f槸杩欓噷瑕佽В鍐崇殑闂
+        // it = shmQueueStMap->erase(it);
+        // continue;
       }
     }
 
     sleep(1);
   }
+  return 0;
 }
 
 //鍒犻櫎鍖呭惈鍦╧eys鍐呯殑queue
@@ -54,16 +57,9 @@
   int count = 0;
   for(int i = 0; i< length; i++) {
     // 閿�姣佸叡浜唴瀛樼殑queue
-    mqueue = (LockFreeQueue<shm_packet_t> *)hashtable_get(hashtable, keys[i]);
-    if(mqueue == NULL) {
-    	continue;
-    }
-    if(difftime(time(NULL), mqueue->getCreateTime()) > BUFFER_TIME ) {
-      delete mqueue;
-      hashtable_remove(hashtable, keys[i]);
-      LoggerFactory::getLogger()->debug("remove queue %d",  keys[i]);
-      count++;
-    }
+    hashtable_remove(hashtable, keys[i]);
+    LoggerFactory::getLogger()->debug("remove queue %d",  keys[i]);
+    count++;
     
   }
   return count;
@@ -89,13 +85,9 @@
     // 100鍐呯殑鏄痓us鍐呴儴鑷繁鐢ㄧ殑
     if (!found && *keyItr > 100) {
       // 閿�姣佸叡浜唴瀛樼殑queue
-      mqueue = (LockFreeQueue<shm_packet_t> *)hashtable_get(hashtable, *keyItr);
-      if(difftime(time(NULL), mqueue->getCreateTime()) > BUFFER_TIME ) {
-        delete mqueue;
-        hashtable_remove(hashtable, *keyItr);
-        LoggerFactory::getLogger()->debug("remove queue %d",  *keyItr);
-        count++;
-      }
+      hashtable_remove(hashtable, *keyItr);
+      LoggerFactory::getLogger()->debug("remove queue %d",  *keyItr);
+      count++;
      
     }
   }

--
Gitblit v1.8.0