From 34bc326eab06b9b1da2004a9e0d2182d63501d68 Mon Sep 17 00:00:00 2001
From: lichao <lichao@aiotlink.com>
Date: 星期五, 14 五月 2021 17:57:49 +0800
Subject: [PATCH] change SendQ data from variant to int64.

---
 src/topic_node.h |   18 ++++++++++++++++--
 1 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/src/topic_node.h b/src/topic_node.h
index 3c90e5b..b018807 100644
--- a/src/topic_node.h
+++ b/src/topic_node.h
@@ -22,6 +22,7 @@
 #include "socket.h"
 #include <atomic>
 #include <memory>
+#include <mutex>
 #include <vector>
 
 using namespace bhome_shm;
@@ -121,13 +122,21 @@
 		   eSockSub,
 		   eSockEnd,
 	};
-	std::vector<std::unique_ptr<ShmSocket>> sockets_;
+	std::vector<std::shared_ptr<ShmSocket>> sockets_;
 
 	ShmSocket &SockNode() { return *sockets_[eSockNode]; }
 	ShmSocket &SockPub() { return *sockets_[eSockPub]; }
 	ShmSocket &SockSub() { return *sockets_[eSockSub]; }
 	ShmSocket &SockClient() { return *sockets_[eSockClient]; }
 	ShmSocket &SockServer() { return *sockets_[eSockServer]; }
+
+	void SetProcIndex(int index)
+	{
+		proc_index_ = index;
+		for (int i = eSockStart; i < eSockEnd; ++i) {
+			sockets_[i]->SetNodeProc(index, i);
+		}
+	}
 
 	enum State {
 		eStateUnregistered,
@@ -137,8 +146,13 @@
 	void state(const State st) { state_.store(st); }
 	void state_cas(State expected, const State val) { state_.compare_exchange_strong(expected, val); }
 	State state() const { return state_.load(); }
-	bool IsOnline() const { return state() == eStateOnline; }
+	bool IsOnline() { return Init() && state() == eStateOnline; }
+	bool Init();
+	bool Valid() const { return !sockets_.empty(); }
+	std::mutex mutex_;
+	MQId ssn_id_ = 0;
 	std::atomic<State> state_;
+	int proc_index_ = -1;
 
 	TopicQueryCache topic_query_cache_;
 };

--
Gitblit v1.8.0