From faa795164368ec444410374699548bb27b0d95ce Mon Sep 17 00:00:00 2001
From: lichao <lichao@aiotlink.com>
Date: 星期三, 21 四月 2021 13:26:58 +0800
Subject: [PATCH] add node state, test change node mq length.

---
 src/topic_node.h |   14 +++++++++++---
 1 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/src/topic_node.h b/src/topic_node.h
index 35cdde5..8287b4a 100644
--- a/src/topic_node.h
+++ b/src/topic_node.h
@@ -20,6 +20,7 @@
 
 #include "msg.h"
 #include "socket.h"
+#include <atomic>
 #include <memory>
 
 using namespace bhome_shm;
@@ -112,14 +113,21 @@
 	ShmSocket &SockSub() { return sock_sub_; }
 	ShmSocket &SockClient() { return sock_client_; }
 	ShmSocket &SockServer() { return sock_server_; }
-	bool IsRegistered() const { return registered_.load(); }
 
 	ShmSocket sock_node_;
 	ShmSocket sock_client_;
 	ShmSocket sock_server_;
 	ShmSocket sock_sub_;
-	std::atomic<bool> registered_;
-	std::atomic<bool> registered_ever_;
+	enum State {
+		eStateUnregistered,
+		eStateOnline,
+		eStateOffline // heartbeat fail.
+	};
+	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; }
+	std::atomic<State> state_;
 
 	TopicQueryCache topic_query_cache_;
 };

--
Gitblit v1.8.0