1 #include "daq/slc/nsm/Callback.h"
3 #include "daq/slc/base/StringUtil.h"
9 for (NSMVHandlerList::iterator it = m_handler.begin();
10 it != m_handler.end(); it++) {
11 if (it->second != NULL)
delete it->second;
13 m_handler = NSMVHandlerList();
14 m_hnames = StringList();
18 int Callback::add(
NSMVHandler* handler,
bool overwrite,
bool isdump)
21 std::string hname = handler->getNode() +
"@" + handler->getName();
22 if (m_handler.find(hname) != m_handler.end()) {
23 NSMVHandler* handler_old = m_handler.find(hname)->second;
24 if (handler->useSet() && overwrite) {
25 handler->set(handler_old->get());
28 m_handler.erase(hname);
30 handler->setDumped(isdump);
31 m_handler.insert(std::pair<std::string, NSMVHandler*>(hname, handler));
32 m_hnames.push_back(hname);
33 return m_handler.size();
38 void Callback::remove(
const std::string& node,
const std::string& name)
40 std::string hname = node +
"@" + node;
41 if (m_handler.find(hname) != m_handler.end()) {
42 NSMVHandler* handler_old = m_handler.find(hname)->second;
44 m_handler.erase(hname);
49 NSMVHandler& Callback::getHandler(
const std::string& node,
50 const std::string& name)
53 if (p != NULL)
return *p;
54 throw (std::out_of_range(StringUtil::form(
"no handler for %s:%s",
55 node.c_str(), name.c_str())));
58 NSMVHandler* Callback::getHandler_p(
const std::string& node,
const std::string& name)
60 std::string hname = node +
"@" + name;
61 if (m_handler.find(hname) != m_handler.end()) {
62 return m_handler.find(hname)->second;
65 if (m_handler.find(hname) != m_handler.end()) {
66 return m_handler.find(hname)->second;
71 void Callback::remove(
const DBObject& obj)
73 DBObject::NameValueList list;
74 obj.search(list,
"",
true);
75 for (DBObject::NameValueList::iterator it = list.begin();
76 it != list.end(); it++) {
77 const std::string& name(it->name);
78 if (name.size() == 0 || name.at(0) ==
'$')
continue;