1 #ifndef _Belle2_NSMCommunicator_hh
2 #define _Belle2_NSMCommunicator_hh
4 #include "daq/slc/nsm/NSMMessage.h"
5 #include "daq/slc/nsm/NSMNode.h"
7 #include <daq/slc/system/Mutex.h>
10 #include <nsm2/nsm2.h>
27 typedef std::vector<NSMCommunicator*> NSMCommunicatorList;
34 static NSMCommunicatorList& get() {
return g_comm; }
38 static NSMCommunicatorList g_comm;
40 static Mutex g_mutex_select;
48 void init(
const NSMNode& node,
const std::string& host,
int port)
56 int getId()
const {
return m_id; }
57 void setId(
int id) { m_id = id; }
59 const NSMMessage& getMessage()
const {
return m_message; }
61 const NSMNode& getNode()
const {
return m_node; }
62 int getNodeIdByName(
const std::string& name);
63 int getNodePidByName(
const std::string& name);
68 const std::string& getHostName() {
return m_host; }
69 int getPort() {
return m_port; }
71 bool isConnected(
const std::string& node);
72 const std::string getNodeNameById(
int id);
73 void pushQueue(
const NSMMessage& msg) { m_msg_q.push(msg); }
74 bool hasQueue()
const {
return !m_msg_q.empty(); }
91 std::queue<NSMMessage> m_msg_q;
95 typedef std::vector<NSMCommunicator*> NSMCommunicatorList;