1 #ifndef _Belle2_AbstractNSMCallback_hh
2 #define _Belle2_AbstractNSMCallback_hh
4 #include "daq/slc/nsm/Callback.h"
5 #include "daq/slc/nsm/NSMMessage.h"
6 #include "daq/slc/nsm/NSMNode.h"
7 #include "daq/slc/nsm/NSMCommand.h"
18 class NSMCommunicator;
19 typedef std::map<std::string, NSMNode> NSMNodeMap;
20 typedef std::map<std::string, NSMNodeMap> NSMNodeMapMap;
32 bool get(
const NSMNode& node,
const std::string& name,
int& val,
int timeout = 5);
33 bool get(
const NSMNode& node,
const std::string& name,
float& val,
int timeout = 5);
34 bool get(
const NSMNode& node,
const std::string& name, std::string& val,
int timeout = 5);
35 bool get(
const NSMNode& node,
const std::string& name, std::vector<int>& val,
int timeout = 5);
36 bool get(
const NSMNode& node,
const std::string& name, std::vector<float>& val,
int timeout = 5);
37 bool set(
const NSMNode& node,
const std::string& name,
int val,
int timeout = 5);
38 bool set(
const NSMNode& node,
const std::string& name,
float val,
int timeout = 5);
39 bool set(
const NSMNode& node,
const std::string& name,
const std::string& val,
int timeout = 5);
40 bool set(
const NSMNode& node,
const std::string& name,
const std::vector<int>& val,
int timeout = 5);
41 bool set(
const NSMNode& node,
const std::string& name,
const std::vector<float>& val,
int timeout = 5);
44 bool get(
const std::string& name,
int& val) {
return get(
"", name, val); }
45 bool get(
const std::string& name,
float& val) {
return get(
"", name, val); }
46 bool get(
const std::string& name, std::string& val) {
return get(
"", name, val); }
47 bool get(
const std::string& name, std::vector<int>& val) {
return get(
"", name, val); }
48 bool get(
const std::string& name, std::vector<float>& val) {
return get(
"", name, val); }
49 bool set(
const std::string& name,
int val) {
return set(
"", name, val); }
50 bool set(
const std::string& name,
float val) {
return set(
"", name, val); }
51 bool set(
const std::string& name,
const std::string& val) {
return set(
"", name, val); }
52 bool set(
const std::string& name,
const std::vector<int>& val) {
return set(
"", name, val); }
53 bool set(
const std::string& name,
const std::vector<float>& val) {
return set(
"", name, val); }
54 bool get(
const std::string& node,
const std::string& name,
int& val) {
return get_t(node, name, val); }
55 bool get(
const std::string& node,
const std::string& name,
float& val) {
return get_t(node, name, val); }
56 bool get(
const std::string& node,
const std::string& name, std::string& val) {
return get_t(node, name, val); }
57 bool get(
const std::string& node,
const std::string& name, std::vector<int>& val) {
return get_t(node, name, val); }
58 bool get(
const std::string& node,
const std::string& name, std::vector<float>& val) {
return get_t(node, name, val); }
59 bool set(
const std::string& node,
const std::string& name,
int val) {
return set_t(node, name, val); }
60 bool set(
const std::string& node,
const std::string& name,
float val) {
return set_t(node, name, val); }
61 bool set(
const std::string& node,
const std::string& name,
const std::string& val) {
return set_t(node, name, val); }
62 bool set(
const std::string& node,
const std::string& name,
const std::vector<int>& val) {
return set_t(node, name, val); }
63 bool set(
const std::string& node,
const std::string& name,
const std::vector<float>& val) {
return set_t(node, name, val); }
64 int wait(
double timeout = 5);
67 virtual void notify(
const NSMVar& var) = 0;
71 NSMNode& getNode() {
return m_node; }
72 const NSMNode& getNode()
const {
return m_node; }
73 void setNode(
const NSMNode& node) { m_node = node; }
74 int getTimeout()
const {
return m_timeout; }
75 void setTimeout(
int timeout) { m_timeout = timeout; }
84 NSMNodeMapMap m_node_v_m;
88 bool set(
const NSMNode& node,
const NSMVar& var,
int timeout = 5);
92 bool get_t(
const NSMNode& node,
const std::string& name,
93 T& val,
int timeout, NSMVar::Type type = NSMVar::NONE,
int len = 0)
96 var.setNode(node.getName());
97 if (get(node, var, timeout)) {
98 if (type == NSMVar::NONE ||
99 (type == var.getType() &&
100 ((len == 0 && var.getLength() == 0) ||
101 (len > 0 && var.getLength() > 0)))) {
109 bool get_t(
const std::string& node,
const std::string& name, T& val)
114 handler->handleGet(var);
121 bool set_t(
const std::string& node,
const std::string& name,
const T& val)
126 if (node.size() == 0) {
127 notify(handler->get());