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