本文整理汇总了C++中AmConfigReader::end方法的典型用法代码示例。如果您正苦于以下问题:C++ AmConfigReader::end方法的具体用法?C++ AmConfigReader::end怎么用?C++ AmConfigReader::end使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AmConfigReader
的用法示例。
在下文中一共展示了AmConfigReader::end方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: preload
int MOD_CLS_NAME::preload() {
AmConfigReader cfg;
if(cfg.loadPluginConf(MOD_NAME)) {
INFO("no module configuration for '%s' found, not preloading regular expressions\n",
MOD_NAME);
return 0;
}
bool failed = false;
for (std::map<string,string>::const_iterator it =
cfg.begin(); it != cfg.end(); it++) {
if (add_regex(it->first, it->second)) {
ERROR("compiling regex '%s' for '%s'\n",
it->second.c_str(), it->first.c_str());
failed = true;
} else {
DBG("compiled regex '%s' as '%s'\n", it->second.c_str(), it->first.c_str());
}
}
return failed? -1 : 0;
}
示例2: onLoad
int DSMFactory::onLoad()
{
if (loaded)
return 0;
loaded = true;
AmConfigReader cfg;
if(cfg.loadFile(AmConfig::ModConfigPath + string(MOD_NAME ".conf")))
return -1;
// get application specific global parameters
configureModule(cfg);
vector<string> prompts_files =
explode(cfg.getParameter("load_prompts"), ",");
for (vector<string>::iterator it=
prompts_files.begin(); it != prompts_files.end(); it++) {
DBG("loading prompts from '%s'\n", it->c_str());
std::ifstream ifs(it->c_str());
string s;
while (ifs.good() && !ifs.eof()) {
getline(ifs, s);
if (s.length() && s.find_first_not_of(" \t")!= string::npos &&
s[s.find_first_not_of(" \t")] != '#') {
vector<string> p=explode(s, "=");
if (p.size()==2) {
prompts.setPrompt(p[0], p[1], MOD_NAME);
DBG("added prompt '%s' as '%s'\n",
p[0].c_str(), p[1].c_str());
}
}
}
}
string prompt_sets_path = cfg.getParameter("prompts_sets_path");
vector<string> prompt_sets_names =
explode(cfg.getParameter("load_prompts_sets"), ",");
for (vector<string>::iterator it=
prompt_sets_names.begin(); it != prompt_sets_names.end(); it++) {
string fname = prompt_sets_path.empty() ? "": prompt_sets_path + "/";
fname += *it;
DBG("loading prompts for '%s' (file '%s')\n", it->c_str(), fname.c_str());
std::ifstream ifs(fname.c_str());
string s;
if (!ifs.good()) {
WARN("prompts set file '%s' could not be read\n", fname.c_str());
}
AmPromptCollection* pc = new AmPromptCollection();
while (ifs.good() && !ifs.eof()) {
getline(ifs, s);
if (s.length() && s.find_first_not_of(" \t")!= string::npos &&
s[s.find_first_not_of(" \t")] != '#') {
vector<string> p=explode(s, "=");
if (p.size()==2) {
pc->setPrompt(p[0], p[1], MOD_NAME);
DBG("set '%s' added prompt '%s' as '%s'\n",
it->c_str(), p[0].c_str(), p[1].c_str());
}
}
}
prompt_sets[*it] = pc;
}
string DiagPath = cfg.getParameter("diag_path");
if (DiagPath.length() && DiagPath[DiagPath.length()-1] != '/')
DiagPath += '/';
string ModPath = cfg.getParameter("mod_path");
string preload_mods = cfg.getParameter("preload_mods");
vector<string> preload_names = explode(preload_mods, ",");
if (preload_names.size()) {
DSMChartReader reader;
for (vector<string>::iterator it=
preload_names.begin(); it != preload_names.end(); it++) {
DBG("preloading '%s'...\n", it->c_str());
if (!reader.importModule("import("+*it+")", ModPath)) {
ERROR("importing module '%s' for preload\n", it->c_str());
return -1;
}
DSMModule* last_loaded = reader.mods.back();
if (last_loaded) {
if (last_loaded->preload()) {
DBG("Error while preloading '%s'\n", it->c_str());
return -1;
}
}
}
}
// TODO: pass preloaded mods to chart reader
string LoadDiags = cfg.getParameter("load_diags");
vector<string> diags_names = explode(LoadDiags, ",");
for (vector<string>::iterator it=
diags_names.begin(); it != diags_names.end(); it++) {
if (!diags.loadFile(DiagPath+*it+".dsm", *it, ModPath)) {
ERROR("loading %s from %s\n",
it->c_str(), (DiagPath+*it+".dsm").c_str());
return -1;
//.........这里部分代码省略.........
示例3: loadConfig
bool DSMFactory::loadConfig(const string& conf_file_name, const string& conf_name,
bool live_reload, DSMStateDiagramCollection* m_diags) {
string script_name = conf_name.substr(0, conf_name.length()-5); // - .conf
DBG("loading %s from %s ...\n", script_name.c_str(), conf_file_name.c_str());
AmConfigReader cfg;
if(cfg.loadFile(conf_file_name))
return false;
DSMScriptConfig script_config;
script_config.RunInviteEvent =
cfg.getParameter("run_invite_event")=="yes";
script_config.SetParamVariables =
cfg.getParameter("set_param_variables")=="yes";
script_config.config_vars.insert(cfg.begin(), cfg.end());
if (live_reload) {
INFO("live DSM config reload does NOT reload prompts and prompt sets!\n");
INFO("(see http://tracker.iptel.org/browse/SEMS-68)\n");
} else {
if (!loadPrompts(cfg))
return false;
if (!loadPromptSets(cfg))
return false;
}
DSMStateDiagramCollection* used_diags;
if (m_diags != NULL)
used_diags = m_diags; // got this from caller (main diags)
else {
// create a new set of diags
used_diags = script_config.diags = new DSMStateDiagramCollection();
}
if (!loadDiags(cfg, used_diags))
return false;
vector<string> registered_apps;
if (!registerApps(cfg, used_diags, registered_apps))
return false;
ScriptConfigs_mut.lock();
try {
// set ScriptConfig to this for all registered apps' names
for (vector<string>::iterator reg_app_it=
registered_apps.begin(); reg_app_it != registered_apps.end(); reg_app_it++) {
string& app_name = *reg_app_it;
// dispose of the old one, if it exists
map<string, DSMScriptConfig>::iterator it=ScriptConfigs.find(app_name);
if (it != ScriptConfigs.end()) {
// may be in use by active call - don't delete but save to
// old_diags for garbage collection (destructor)
if (it->second.diags != NULL)
old_diags.insert(it->second.diags);
}
// overwrite with new config
ScriptConfigs[app_name] = script_config;
}
} catch(...) {
ScriptConfigs_mut.unlock();
throw;
}
ScriptConfigs_mut.unlock();
return true;
}
示例4: onLoad
int DSMFactory::onLoad()
{
if (loaded)
return 0;
loaded = true;
AmConfigReader cfg;
if(cfg.loadFile(AmConfig::ModConfigPath + string(MOD_NAME ".conf")))
return -1;
// get application specific global parameters
configureModule(cfg);
DebugDSM = cfg.getParameter("debug_raw_dsm") == "yes";
if (!loadPrompts(cfg))
return -1;
if (!loadPromptSets(cfg))
return -1;
if (!loadDiags(cfg, MainScriptConfig.diags))
return -1;
vector<string> registered_apps;
if (!registerApps(cfg, MainScriptConfig.diags, registered_apps))
return -1;
InboundStartDiag = cfg.getParameter("inbound_start_diag");
if (InboundStartDiag.empty()) {
INFO("no 'inbound_start_diag' set in config. "
"inbound calls with application 'dsm' disabled.\n");
}
OutboundStartDiag = cfg.getParameter("outbound_start_diag");
if (OutboundStartDiag.empty()) {
INFO("no 'outbound_start_diag' set in config. "
"outbound calls with application 'dsm' disabled.\n");
}
if (!InboundStartDiag.empty())
AmPlugIn::instance()->registerFactory4App("dsm",this);
MainScriptConfig.config_vars.insert(cfg.begin(), cfg.end());
// for (std::map<string,string>::const_iterator it =
// cfg.begin(); it != cfg.end(); it++)
// MainScriptConfig.config_vars[it->first] = it->second;
MainScriptConfig.RunInviteEvent = cfg.getParameter("run_invite_event")=="yes";
MainScriptConfig.SetParamVariables = cfg.getParameter("set_param_variables")=="yes";
#ifdef USE_MONITORING
string monitoring_full_callgraph = cfg.getParameter("monitoring_full_stategraph");
MonitoringFullCallgraph = monitoring_full_callgraph == "yes";
DBG("%sogging full call graph (states) to monitoring.\n",
MonitoringFullCallgraph?"L":"Not l");
string monitoring_full_transitions = cfg.getParameter("monitoring_full_transitions");
MonitoringFullTransitions = monitoring_full_transitions == "yes";
DBG("%sogging full call graph (transitions) to monitoring.\n",
MonitoringFullTransitions?"L":"Not l");
string cfg_usecaller = cfg.getParameter("monitor_select_use_caller");
if (cfg_usecaller.empty() || cfg_usecaller=="from")
MonSelectCaller = MonSelect_FROM;
else if (cfg_usecaller=="no")
MonSelectCaller = MonSelect_NONE;
else if (cfg_usecaller=="pai")
MonSelectCaller = MonSelect_PAI;
else {
ERROR("monitor_select_use_caller value '%s' not understood\n",
cfg_usecaller.c_str());
}
string cfg_usecallee = cfg.getParameter("monitor_select_use_callee");
if (cfg_usecallee.empty() || cfg_usecallee=="ruri")
MonSelectCallee = MonSelect_RURI;
else if (cfg_usecallee=="no")
MonSelectCallee = MonSelect_NONE;
else if (cfg_usecallee=="from")
MonSelectCallee = MonSelect_FROM;
else {
ERROR("monitor_select_use_callee value '%s' not understood\n",
cfg_usecallee.c_str());
}
#endif
string conf_d_dir = cfg.getParameter("conf_dir");
if (!conf_d_dir.empty()) {
if (conf_d_dir[conf_d_dir.length()-1] != '/')
conf_d_dir += '/';
DBG("processing configurations in '%s'...\n", conf_d_dir.c_str());
int err=0;
struct dirent* entry;
DIR* dir = opendir(conf_d_dir.c_str());
if(!dir){
//.........这里部分代码省略.........
示例5: loadScript
bool IvrFactory::loadScript(const string& path)
{
PYLOCK;
PyObject *modName=NULL,*mod=NULL,*dict=NULL,*dlg_class=NULL,*config=NULL;
// load module configuration
AmConfigReader cfg;
string cfg_file = add2path(AmConfig::ModConfigPath,1,(path + ".conf").c_str());
config = PyDict_New();
if(!config){
ERROR("could not allocate new dict for config\n");
goto error2;
}
if(cfg.loadFile(cfg_file)){
WARN("could not load config file at %s\n",cfg_file.c_str());
} else {
for(map<string,string>::const_iterator it = cfg.begin();
it != cfg.end(); it++){
PyDict_SetItem(config,
PyString_FromString(it->first.c_str()),
PyString_FromString(it->second.c_str()));
}
}
// set config ivr ivr_module while loading
Py_INCREF(config);
PyObject_SetAttrString(ivr_module,"config",config);
// load module
modName = PyString_FromString(path.c_str());
mod = PyImport_Import(modName);
if (NULL != config) {
// remove config ivr ivr_module while loading
PyObject_DelAttrString(ivr_module, "config");
Py_DECREF(config);
}
if(!mod){
PyErr_Print();
WARN("IvrFactory: Failed to load \"%s\"\n", path.c_str());
// before python 2.4,
// it can happen that the module
// is still in the dictionnary.
dict = PyImport_GetModuleDict();
Py_INCREF(dict);
if(PyDict_Contains(dict,modName)){
PyDict_DelItem(dict,modName);
}
Py_DECREF(dict);
Py_DECREF(modName);
return false;
}
Py_DECREF(modName);
dict = PyModule_GetDict(mod);
dlg_class = PyDict_GetItemString(dict, "IvrDialog");
if(!dlg_class){
PyErr_Print();
WARN("IvrFactory: class IvrDialog not found in \"%s\"\n", path.c_str());
goto error1;
}
Py_INCREF(dlg_class);
if(!PyObject_IsSubclass(dlg_class,(PyObject*)&IvrDialogBaseType)){
WARN("IvrFactory: in \"%s\": IvrDialog is not a subtype of IvrDialogBase\n",
path.c_str());
goto error2;
}
PyObject_SetAttrString(mod,"config",config);
mod_reg.insert(std::make_pair(path,
IvrScriptDesc(mod,dlg_class)));
return true;
error2:
Py_DECREF(dlg_class);
error1:
Py_DECREF(mod);
return false;
}
示例6: loadScript
bool PySemsFactory::loadScript(const string& path)
{
PYLOCK;
PyObject *modName,*mod,*dict, *dlg_class, *config=NULL;
PySemsScriptDesc::DialogType dt = PySemsScriptDesc::None;
modName = PyString_FromString(path.c_str());
mod = PyImport_Import(modName);
AmConfigReader cfg;
string cfg_file = add2path(AmConfig::ModConfigPath,1,(path + ".conf").c_str());
Py_DECREF(modName);
if(!mod){
PyErr_Print();
WARN("PySemsFactory: Failed to load \"%s\"\n", path.c_str());
dict = PyImport_GetModuleDict();
Py_INCREF(dict);
PyDict_DelItemString(dict,path.c_str());
Py_DECREF(dict);
return false;
}
dict = PyModule_GetDict(mod);
dlg_class = PyDict_GetItemString(dict, "PySemsScript");
if(!dlg_class){
PyErr_Print();
WARN("PySemsFactory: class PySemsDialog not found in \"%s\"\n", path.c_str());
goto error1;
}
Py_INCREF(dlg_class);
if(PyObject_IsSubclass(dlg_class,(PyObject *)sipClass_PySemsDialog)) {
dt = PySemsScriptDesc::Dialog;
DBG("Loaded a Dialog Script.\n");
} else if (PyObject_IsSubclass(dlg_class,(PyObject *)sipClass_PySemsB2BDialog)) {
DBG("Loaded a B2BDialog Script.\n");
dt = PySemsScriptDesc::B2BDialog;
} else if (PyObject_IsSubclass(dlg_class,(PyObject *)sipClass_PySemsB2ABDialog)) {
DBG("Loaded a B2ABDialog Script.\n");
dt = PySemsScriptDesc::B2ABDialog;
} else {
WARN("PySemsFactory: in \"%s\": PySemsScript is not a "
"subtype of PySemsDialog\n", path.c_str());
goto error2;
}
if(cfg.loadFile(cfg_file)){
ERROR("could not load config file at %s\n",cfg_file.c_str());
goto error2;
}
config = PyDict_New();
if(!config){
ERROR("could not allocate new dict for config\n");
goto error2;
}
for(map<string,string>::const_iterator it = cfg.begin();
it != cfg.end(); it++){
PyDict_SetItem(config,
PyString_FromString(it->first.c_str()),
PyString_FromString(it->second.c_str()));
}
PyObject_SetAttrString(mod,"config",config);
mod_reg.insert(std::make_pair(path,
PySemsScriptDesc(mod,dlg_class, dt)));
return true;
error2:
Py_DECREF(dlg_class);
error1:
Py_DECREF(mod);
return false;
}