lichao
2021-05-14 34bc326eab06b9b1da2004a9e0d2182d63501d68
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_;
};