From 00dba6082e245d917cb7d6eed3c627211ff41cd7 Mon Sep 17 00:00:00 2001 From: wangzhengquan <wangzhengquan85@126.com> Date: 星期五, 25 九月 2020 15:53:21 +0800 Subject: [PATCH] update --- src/socket/dmod_socket.c | 39 +++++++++++++++++++++------------------ 1 files changed, 21 insertions(+), 18 deletions(-) diff --git a/src/socket/dmod_socket.c b/src/socket/dmod_socket.c index df57a9f..a0aa96b 100644 --- a/src/socket/dmod_socket.c +++ b/src/socket/dmod_socket.c @@ -52,16 +52,6 @@ } } return count; -// foreach_subscripters([keys, length, &count](SHMKeySet *subscripter_set, int key){ -// printf("foreach===========\n"); -// if (include_in_keys(key, keys, length)) { - -// //subscripter_set->erase(key); -// printf("remove_subscripter %d\n", key); -// count++; -// } -// }); -// printf("remove_subscripters count = %d\n", count); } @@ -72,34 +62,47 @@ } DModSocket::DModSocket() { - shm_socket = shm_open_socket(SHM_SOCKET_DGRAM); - bus_set = new std::set<int>; + mod = (socket_mod_t)0; + shm_socket = shm_open_socket(SHM_SOCKET_DGRAM); + bus_set = new std::set<int>; + topic_sub_map = NULL; } DModSocket::~DModSocket() { +// printf("DModSocket destory 1\n"); SHMKeySet *subscripter_set; SHMTopicSubMap::iterator map_iter; struct timespec timeout = {1, 0}; if(bus_set != NULL) { for(auto bus_iter = bus_set->begin(); bus_iter != bus_set->end(); bus_iter++) { +// printf("DModSocket desub_timeout before"); desub_timeout(NULL, 0, *bus_iter, &timeout); +// printf("DModSocket desub_timeout after %d\n", *bus_iter); } delete bus_set; } - + +// printf("DModSocket destory 2\n"); if(topic_sub_map != NULL) { for (map_iter = topic_sub_map->begin(); map_iter != topic_sub_map->end(); map_iter++) { subscripter_set = map_iter->second; - subscripter_set->clear(); - mm_free((void *)subscripter_set); - //delete subscripter_set; - // printf("=============delete subscripter_set\n"); +// printf("DModSocket destory 2-1\n"); + if(subscripter_set != NULL) { +// printf("DModSocket destory 2-2\n"); + subscripter_set->clear(); +// printf("DModSocket destory 2-3\n"); + mm_free((void *)subscripter_set); +// printf("DModSocket destory 2-4\n"); + } + } topic_sub_map->clear(); mem_pool_free_by_key(BUS_MAP_KEY); } +// printf("DModSocket destory 3\n"); // printf("=============close socket\n"); shm_close_socket(shm_socket); +// printf("DModSocket destory 4\n"); } int DModSocket::bind(int port) { @@ -419,7 +422,7 @@ } } else if(strcmp(action, "desub") == 0) { -printf("desub topic=%s,%s,%d\n", topics, trim(topics, 0), strcmp(trim(topics, 0), "")); +// printf("desub topic=%s,%s,%d\n", topics, trim(topics, 0), strcmp(trim(topics, 0), "")); if(strcmp(trim(topics, 0), "") == 0) { // 鍙栨秷鎵�鏈夎闃� printf("====鍙栨秷鎵�鏈夎闃匼n"); -- Gitblit v1.8.0