From 854c63136c4d3a195e2dc617cd7330650bbaf504 Mon Sep 17 00:00:00 2001 From: lichao <lichao@aiotlink.com> Date: 星期三, 28 四月 2021 19:17:02 +0800 Subject: [PATCH] fix Cleanup and center online map not removed. --- box/center.cpp | 9 +++++++++ src/bh_api.cpp | 13 +++++++++---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/box/center.cpp b/box/center.cpp index 5cb9bc3..0952ca7 100644 --- a/box/center.cpp +++ b/box/center.cpp @@ -392,9 +392,18 @@ EraseMapRec(service_map_, node->services_); EraseMapRec(subscribe_map_, node->subscriptions_); + // remove online record. + auto pos = online_node_addr_map_.find(node->proc_.proc_id()); + if (pos != online_node_addr_map_.end()) { + if (node->addrs_.find(pos->second) != node->addrs_.end()) { + online_node_addr_map_.erase(pos); + } + } + for (auto &addr : node->addrs_) { cleaner_(addr); } + node->addrs_.clear(); } std::string id_; // center proc id; diff --git a/src/bh_api.cpp b/src/bh_api.cpp index efa278e..c29afd9 100644 --- a/src/bh_api.cpp +++ b/src/bh_api.cpp @@ -8,11 +8,15 @@ namespace { -TopicNode &ProcNode() +std::unique_ptr<TopicNode> &ProcNodePtr() { static bool init = GlobalInit(BHomeShm()); - static TopicNode node(BHomeShm()); - return node; + static std::unique_ptr<TopicNode> ptr(new TopicNode(BHomeShm())); + return ptr; +} +TopicNode &ProcNode() +{ + return *ProcNodePtr(); } class TmpPtr : private boost::noncopyable @@ -322,7 +326,8 @@ int BHCleanup() { - ProcNode().Stop(); + ProcNodePtr().reset(); + return 0; } int BHGetLastError(void **msg, int *msg_len) -- Gitblit v1.8.0