24 #include "XrdkCentralComRFCVar.h"
25 #include "hostIf_utils.h"
27 #define RFC_VAR_KEY "RFC_VAR_FILENAME"
28 #define RFC_PROPERTIES_FILE "/etc/rfc.properties"
32 void XRFCVarStore::reloadCache()
34 RDK_LOG (RDK_LOG_TRACE1, LOG_TR69HOSTIF,
"Entering %s \n", __FUNCTION__);
36 initDone = loadRFCVarIntoCache();
38 RDK_LOG (RDK_LOG_TRACE1, LOG_TR69HOSTIF,
"Leaving %s \n", __FUNCTION__);
41 string XRFCVarStore::getValue(
const string &key)
43 RDK_LOG (RDK_LOG_TRACE1, LOG_TR69HOSTIF,
"Entering %s \n", __FUNCTION__);
46 RDK_LOG(RDK_LOG_ERROR, LOG_TR69HOSTIF,
"Init Failed, can't handle the request\n");
50 unordered_map<string,string>::const_iterator it = m_dict.find(key);
51 if (it == m_dict.end()) {
54 RDK_LOG (RDK_LOG_TRACE1, LOG_TR69HOSTIF,
"Leaving %s : Value = %s \n", __FUNCTION__, it->second.c_str());
59 void XRFCVarStore::initRFCVarFileName()
61 RDK_LOG (RDK_LOG_TRACE1, LOG_TR69HOSTIF,
"Entering %s \n", __FUNCTION__);
62 ifstream ifs_rfc(RFC_PROPERTIES_FILE);
63 if(!ifs_rfc.is_open())
65 RDK_LOG (RDK_LOG_ERROR, LOG_TR69HOSTIF,
"%s: Trying to open a non-existent file [%s] \n", __FUNCTION__, RFC_PROPERTIES_FILE);
70 while (getline(ifs_rfc, line)) {
71 size_t splitterPos = line.find(
'=');
72 if (splitterPos < line.length()) {
73 string key = line.substr(0, splitterPos);
74 string value = line.substr(splitterPos+1, line.length());
75 if(!strcmp(key.c_str(), RFC_VAR_KEY))
78 RDK_LOG(RDK_LOG_DEBUG, LOG_TR69HOSTIF,
"RFC Variables FileName = %s\n", m_filename.c_str());
84 if(m_filename.empty())
86 RDK_LOG(RDK_LOG_ERROR, LOG_TR69HOSTIF,
"Didn't find %s in %s\n", RFC_VAR_KEY, RFC_PROPERTIES_FILE);
89 RDK_LOG (RDK_LOG_TRACE1, LOG_TR69HOSTIF,
"Leaving %s \n", __FUNCTION__);
92 bool XRFCVarStore::loadRFCVarIntoCache()
94 RDK_LOG (RDK_LOG_TRACE1, LOG_TR69HOSTIF,
"Entering %s \n", __FUNCTION__);
95 if(m_filename.empty())
97 RDK_LOG(RDK_LOG_ERROR, LOG_TR69HOSTIF,
"Invalid RFC Variables filename, Unable to load properties\n");
101 m_filename.erase(remove(m_filename.begin(), m_filename.end(),
'\"'), m_filename.end());
104 RDK_LOG (RDK_LOG_DEBUG, LOG_TR69HOSTIF,
"RFC Variables File : %s \n", m_filename.c_str());
105 ifstream ifs_rfcVar(m_filename);
106 if (!ifs_rfcVar.is_open()) {
107 RDK_LOG (RDK_LOG_ERROR, LOG_TR69HOSTIF,
"%s: Trying to open a non-existent file [%s] \n", __FUNCTION__, m_filename.c_str());
113 while (getline(ifs_rfcVar, line)) {
114 line=line.substr(line.find_first_of(
" \t")+1);
115 size_t splitterPos = line.find(
'=');
116 if (splitterPos < line.length()) {
117 string key = line.substr(0, splitterPos);
118 string value = line.substr(splitterPos+1, line.length());
120 RDK_LOG(RDK_LOG_DEBUG, LOG_TR69HOSTIF,
"Key = %s : Value = %s\n", key.c_str(), value.c_str());
125 RDK_LOG (RDK_LOG_TRACE1, LOG_TR69HOSTIF,
"Leaving %s \n", __FUNCTION__);
129 XRFCVarStore::XRFCVarStore()
131 RDK_LOG (RDK_LOG_TRACE1, LOG_TR69HOSTIF,
"Entering %s \n", __FUNCTION__);
133 initRFCVarFileName();
135 initDone = loadRFCVarIntoCache();
137 RDK_LOG (RDK_LOG_TRACE1, LOG_TR69HOSTIF,
"Leaving %s \n", __FUNCTION__);
142 RDK_LOG (RDK_LOG_TRACE1, LOG_TR69HOSTIF,
"Entering %s \n", __FUNCTION__);
144 if(!xrfcVarStoreInstance)
147 RDK_LOG (RDK_LOG_TRACE1, LOG_TR69HOSTIF,
"Leaving %s \n", __FUNCTION__);
148 return xrfcVarStoreInstance;