fix Cleanup and center online map not removed.
| | |
| | | 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; |
| | |
| | | |
| | | 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 |
| | |
| | | |
| | | int BHCleanup() |
| | | { |
| | | ProcNode().Stop(); |
| | | ProcNodePtr().reset(); |
| | | return 0; |
| | | } |
| | | |
| | | int BHGetLastError(void **msg, int *msg_len) |