From 7a12bed7a2550d037e6e869c1ed0ce115098dbb2 Mon Sep 17 00:00:00 2001 From: wangzhengquan <wangzhengquan85@126.com> Date: 星期六, 13 三月 2021 18:44:51 +0800 Subject: [PATCH] update --- src/socket/shm_socket.cpp | 60 +++++++++++++++++++++++++++++------------------------------- 1 files changed, 29 insertions(+), 31 deletions(-) diff --git a/src/socket/shm_socket.cpp b/src/socket/shm_socket.cpp index 1f5d47b..b5d4d09 100644 --- a/src/socket/shm_socket.cpp +++ b/src/socket/shm_socket.cpp @@ -10,7 +10,7 @@ static Logger *logger = LoggerFactory::getLogger(); -ShmQueueStMap * shmQueueStMap ; +// ShmQueueStMap * shmQueueStMap ; static void print_msg(char *head, shm_packet_t &msg) { // err_msg(0, "%s: key=%d, type=%d\n", head, msg.key, msg.type); @@ -104,7 +104,7 @@ err_exit(s, "pthread_mutexattr_destroy"); - shmQueueStMap = shm_mm_attach<ShmQueueStMap>(SHM_QUEUE_ST_KEY); + // shmQueueStMap = shm_mm_attach<ShmQueueStMap>(SHM_QUEUE_ST_KEY); return sockt; } @@ -113,37 +113,33 @@ static int _shm_socket_close_(shm_socket_t *sockt) { int rv, i; + hashtable_t *hashtable = mm_get_hashtable(); logger->debug("shm_socket_close\n"); - if(sockt->key != 0) { - auto it = shmQueueStMap->find(sockt->key); - if(it != shmQueueStMap->end()) { - it->second.status = SHM_QUEUE_ST_CLOSED; - it->second.closeTime = time(NULL); - } - } + // if(sockt->key != 0) { + // auto it = shmQueueStMap->find(sockt->key); + // if(it != shmQueueStMap->end()) { + // it->second.status = SHM_QUEUE_ST_CLOSED; + // it->second.closeTime = time(NULL); + // } + // } - printf("====sockt->queue addr = %p\n", sockt->queue); + // printf("====sockt->queue addr = %p\n", sockt->queue); if(sockt->queue != NULL) { + sockt->queue->close(); for( i = 0; i < sockt->queue->size(); i++) { mm_free((*(sockt->queue))[i].buf); logger->info("======= %d free queue element buf\n", sockt->key); } + sleep(1); - // hashtable_remove(hashtable, mkey); + hashtable_remove(hashtable, sockt->key); // sockt->queue = NULL; } - - // hashtable_remove(hashtable, mkey); - // if(sockt->queue != NULL) { - // sockt->queue = NULL; - // } - - pthread_mutex_destroy(&(sockt->mutex) ); free(sockt); return 0; @@ -578,9 +574,9 @@ } // 鏍囪key瀵瑰簲鐨勭姸鎬� 锛屼负opened - stRecord.status = SHM_QUEUE_ST_OPENED; - stRecord.createTime = time(NULL); - shmQueueStMap->insert({sockt->key, stRecord}); + // stRecord.status = SHM_QUEUE_ST_OPENED; + // stRecord.createTime = time(NULL); + // shmQueueStMap->insert({sockt->key, stRecord}); } @@ -597,17 +593,19 @@ } // 妫�鏌ey鏍囪鐨勭姸鎬� - auto it = shmQueueStMap->find(key); - if(it != shmQueueStMap->end()) { - if(it->second.status == SHM_QUEUE_ST_CLOSED) { - // key瀵瑰簲鐨勭姸鎬佹槸鍏抽棴鐨� - goto ERR_CLOSED; - } - } + // auto it = shmQueueStMap->find(key); + // if(it != shmQueueStMap->end()) { + // if(it->second.status == SHM_QUEUE_ST_CLOSED) { + // // key瀵瑰簲鐨勭姸鎬佹槸鍏抽棴鐨� + // goto ERR_CLOSED; + // } + // } remoteQueue = shm_socket_attach_queue(key); if (remoteQueue == NULL ) { + goto ERR_CLOSED; + } else if(remoteQueue->isClosed()) { goto ERR_CLOSED; } @@ -659,9 +657,9 @@ } // 鏍囪key瀵瑰簲鐨勭姸鎬� 锛屼负opened - stRecord.status = SHM_QUEUE_ST_OPENED; - stRecord.createTime = time(NULL); - shmQueueStMap->insert({sockt->key, stRecord}); + // stRecord.status = SHM_QUEUE_ST_OPENED; + // stRecord.createTime = time(NULL); + // shmQueueStMap->insert({sockt->key, stRecord}); if ((rv = pthread_mutex_unlock(&(sockt->mutex))) != 0) err_exit(rv, "shm_recvfrom : pthread_mutex_unlock"); -- Gitblit v1.8.0