本文整理汇总了C++中CConfig::GetParamValue方法的典型用法代码示例。如果您正苦于以下问题:C++ CConfig::GetParamValue方法的具体用法?C++ CConfig::GetParamValue怎么用?C++ CConfig::GetParamValue使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CConfig
的用法示例。
在下文中一共展示了CConfig::GetParamValue方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: LoadConf
int LoadConf (const char *p_pszConfDir) {
int iRetVal = 0;
std::string strConfDir;
std::string strConfFile;
do {
strConfDir = p_pszConfDir;
if ('/' != strConfDir[strConfDir.length() - 1]) {
strConfDir += '/';
}
strConfFile = strConfDir + "coam.conf";
iRetVal = g_coConf.LoadConf (strConfFile.c_str());
if (iRetVal) { iRetVal = -1; break; }
std::vector<std::string> vectValList;
std::vector<std::string>::iterator iterValList;
CConfig *pcoTmp;
g_coConf.GetParamValue ("location", vectValList);
for (iterValList = vectValList.begin(); iterValList != vectValList.end(); ++iterValList) {
strConfFile = strConfDir + *iterValList;
pcoTmp = new CConfig;
iRetVal = pcoTmp->LoadConf (strConfFile.c_str());
if (iRetVal) { iRetVal = -1; break; }
g_mapLocationConf.insert (std::make_pair (std::string(*iterValList), pcoTmp));
}
if (iRetVal) { break; }
} while (0);
return iRetVal;
}
示例2: ChangeOSUser
void ChangeOSUser ()
{
int iFnRes;
const char *pszUser, *pszGroup;
passwd *psoPswd;
group *psoGroup;
gid_t idUser, idGroup;
std::string strVal;
// изменяем id пользователя ОС
iFnRes = g_coConf.GetParamValue ("os_user", strVal);
if (0 == iFnRes) {
pszUser = strVal.c_str();
psoPswd = getpwnam (pszUser);
if (psoPswd) {
idUser = psoPswd->pw_uid;
} else {
idUser = (gid_t)-1;
}
}
strVal.clear();
iFnRes = g_coConf.GetParamValue ("os_group", strVal);
if (0 == iFnRes) {
pszGroup = strVal.c_str();
psoGroup = getgrnam (pszGroup);
if (psoGroup) {
idGroup = psoGroup->gr_gid;
} else {
idGroup = (gid_t)-1;
}
}
g_coLog.SetUGIds (idUser, idGroup);
if ((gid_t)-1 != idUser) {
setuid (idUser);
}
if ((gid_t)-1 != idGroup) {
setgid (idGroup);
}
}
示例3: Filter
bool Filter(const char *p_pszFilterName, std::string &p_strLocation, std::string &p_strValue)
{
bool bRetVal = false;
int iFnRes;
std::map<std::string,CConfig*>::iterator iterLocation;
std::vector<std::string> vectValList;
std::vector<std::string>::iterator iterValList;
CConfig *pcoLocConf;
int iValueLen = p_strValue.length();
do {
// ищем конфигурацию локации
iterLocation = g_mapLocationConf.find (p_strLocation);
if (iterLocation == g_mapLocationConf.end()) {
UTL_LOG_E(g_coLog, "Location '%s' configuration not found", p_strLocation.c_str());
bRetVal = true;
break;
}
pcoLocConf = iterLocation->second;
if (NULL == pcoLocConf) {
UTL_LOG_E(g_coLog, "Location '%s' configuration not exists", p_strLocation.c_str());
bRetVal = true;
break;
}
/* выбираем фильтры для локации */
if (0 != pcoLocConf->GetParamValue (p_pszFilterName, vectValList)) {
bRetVal = true;
break;
}
// обходим все правила изменения имен сервисов
for (iterValList = vectValList.begin(); iterValList != vectValList.end(); ++iterValList) {
// если длина значения больше или равна длине значения фильтра
if (static_cast<size_t>(iValueLen) >= iterValList->length()) {
// сравниваем префикс с началом имени сервиса
iFnRes = p_strValue.compare( 0, iterValList->length(), *iterValList );
// если перфикс и начало имени сервиса совпадают
if (0 == iFnRes) {
bRetVal = true;
UTL_LOG_N( g_coLog, "value %s matched to filter %s", p_strValue.c_str(), iterValList->c_str() );
break;
} else {
UTL_LOG_N( g_coLog, "value %s NOT matched to filter %s(length: %u)", p_strValue.c_str(), iterValList->c_str(), iterValList->length() );
}
}
}
} while (0);
return bRetVal;
}
示例4: ModifyName
int ModifyName(
const char *p_pszModifyRule,
std::string &p_strLocation,
std::string &p_strValue)
{
int iRetVal = 0;
std::map<std::string,CConfig*>::iterator iterLocation;
std::vector<std::string> vectValList;
std::vector<std::string>::iterator iterValList;
CConfig *pcoLocConf;
do {
iterLocation = g_mapLocationConf.find (p_strLocation);
if (iterLocation == g_mapLocationConf.end()) {
UTL_LOG_E(g_coLog, "Location '%s' configuration not found", p_strLocation.c_str());
iRetVal = -1;
break;
}
pcoLocConf = iterLocation->second;
if (NULL == pcoLocConf) {
UTL_LOG_E(g_coLog, "location '%s' configuration not exists", p_strLocation.c_str());
iRetVal = -2;
break;
}
iRetVal = pcoLocConf->GetParamValue (p_pszModifyRule, vectValList);
if (iRetVal) {
break;
}
// выбираем первое правило
iterValList = vectValList.begin();
// обходим все правила изменения имен сервисов
while (iterValList != vectValList.end()) {
UTL_LOG_N( g_coLog, "rule: %s; location: %s; value: %s", p_pszModifyRule, p_strLocation.c_str(), p_strValue.c_str() );
if( ModifyValue( *iterValList, p_strValue ) ) {
UTL_LOG_N( g_coLog, "modified value: rule: %s; location: %s; value: %s", p_pszModifyRule, p_strLocation.c_str(), p_strValue.c_str() );
break;
}
++iterValList;
}
} while (0);
return iRetVal;
}
示例5: ActivateService
int ActivateService (
const SSessionInfo *p_pcsoSessInfo,
const char *p_pcszServiceInfo,
const char *p_pcszAttr,
CIPConnector *p_pcoIPConn)
{
int iRetVal = 0;
char mcPack[0x10000];
__uint16_t ui16PackLen;
__uint16_t ui16ValueLen;
CPSPacket coPSPack;
SPSRequest *psoReq;
do {
psoReq = (SPSRequest*)mcPack;
// ищем конфигурацию локации
std::map<std::string,CConfig*>::iterator iterLocConf;
CConfig *pcoLocConf;
iterLocConf = g_mapLocationConf.find (p_pcsoSessInfo->m_strLocation);
// если конфигурация локации не найдена
if (iterLocConf == g_mapLocationConf.end()) {
UTL_LOG_E(g_coLog, "Location '%s' configuration not found", p_pcsoSessInfo->m_strLocation.c_str());
iRetVal = -1;
break;
}
pcoLocConf = iterLocConf->second;
iRetVal = SetCommonCoASensorAttr (psoReq, sizeof (mcPack), p_pcsoSessInfo, pcoLocConf, p_pcoIPConn);
if (iRetVal) {
break;
}
// добавляем атрибут PS_COMMAND
const char *pcszConfParamName;
char mcCommand[0x400];
std::string strCmd;
std::string strUserAttrName;
pcszConfParamName = "activation";
// запрашиваем значение конфигурационного параметра
iRetVal = pcoLocConf->GetParamValue (pcszConfParamName, strCmd);
// если параметр не найден
if (iRetVal) {
UTL_LOG_E(g_coLog, "Config parameter '%s' not found", pcszConfParamName);
break;
}
// или его значение не задано
if (0 == strCmd.length()) {
UTL_LOG_E(g_coLog, "Config parameter '%s' not defined", pcszConfParamName);
iRetVal = -1;
break;
}
// запрашиваем значение конфигурационного параметра
pcszConfParamName = "use_policy_attr_name";
iRetVal = pcoLocConf->GetParamValue (pcszConfParamName, strUserAttrName);
// если параметр не найден
if (iRetVal) {
UTL_LOG_E(g_coLog, "Config parameter '%s' not found", pcszConfParamName);
break;
}
if (0 == strUserAttrName.compare ("yes") && NULL != p_pcszAttr) {
ui16ValueLen = snprintf (mcCommand, sizeof(mcCommand), "%s=%s=%s", strCmd.c_str(), p_pcszAttr, p_pcszServiceInfo);
} else {
ui16ValueLen = snprintf (mcCommand, sizeof(mcCommand), "%s=%s", strCmd.c_str(), p_pcszServiceInfo);
}
if (ui16ValueLen > sizeof(mcCommand) - 1) {
UTL_LOG_E(g_coLog, "buffer 'mcCommand' too small to store value: needed size is: '%u'", ui16ValueLen);
iRetVal = -1;
break;
}
ui16PackLen = coPSPack.AddAttr(psoReq, sizeof(mcPack), PS_COMMAND, mcCommand, ui16ValueLen, 0);
iRetVal = p_pcoIPConn->Send (mcPack, ui16PackLen);
if (iRetVal) {
UTL_LOG_E(g_coLog, "'p_pcoIPConn->Send': error code: '%d'", iRetVal);
break;
}
iRetVal = p_pcoIPConn->Recv (mcPack, sizeof(mcPack));
if (0 == iRetVal) {
UTL_LOG_E(g_coLog, "connection is closed");
iRetVal = -1;
break;
}
if (0 > iRetVal) {
UTL_LOG_E(g_coLog, "'p_pcoIPConn->Recv': error code: '%d'", iRetVal);
break;
}
iRetVal = ParsePSPack ((SPSRequest*)mcPack, iRetVal);
} while (0);
switch (iRetVal) {
case 0:
case -45:
UTL_LOG_N(
g_coLog,
"UserName: '%s'; NASIPAddress: '%s'; SessionID: '%s'; Policy '%s' activated; result code: '%d'",
p_pcsoSessInfo->m_strUserName.c_str(),
p_pcsoSessInfo->m_strNASIPAddress.c_str(),
//.........这里部分代码省略.........
示例6: InitCoAManager
int InitCoAManager ()
{
int iRetVal = 0;
do {
std::vector<std::string> vectConfParam;
std::string strConfParam;
iRetVal = g_coConf.GetParamValue ("log_file_mask", strConfParam);
if (iRetVal) {
UTL_LOG_F(g_coLog, "Log file mask not defined");
break;
}
/* инициализация логгера */
iRetVal = g_coLog.Init (strConfParam.c_str());
if (iRetVal) {
UTL_LOG_F(g_coLog, "can not initialize log writer: code: '%d'", iRetVal);
break;
}
/* изменение пользователя и группы владельца демона */
ChangeOSUser ();
std::string strDBPoolSize;
int iDBPoolSize;
int iFnRes;
const char *pcszConfParam = "db_pool_size";
iFnRes = g_coConf.GetParamValue( pcszConfParam, strDBPoolSize );
if( iFnRes || 0 == strDBPoolSize.length() ) {
UTL_LOG_F( g_coLog, "dbpool: configuration parameter '%s' not defined", pcszConfParam );
} else {
iDBPoolSize = atoi( strDBPoolSize.c_str() );
}
std::string strDBUser, strDBPswd, strDBDescr;
pcszConfParam = "db_user";
iFnRes = g_coConf.GetParamValue( pcszConfParam, strDBUser );
if( iFnRes || 0 == strDBUser.length() ) {
UTL_LOG_F( g_coLog, "dbpool: configuration parameter '%s' not defined", pcszConfParam );
}
/* запрашиваем пароль пользователя БД из конфигурации */
pcszConfParam = "db_pswd";
iFnRes = g_coConf.GetParamValue( pcszConfParam, strDBPswd );
if( iFnRes || 0 == strDBPswd.length() ) {
UTL_LOG_F( g_coLog, "dbpool: configuration parameter '%s' not defined", pcszConfParam );
}
/* запрашиваем дескриптор БД из конфигурации */
pcszConfParam = "db_descr";
iFnRes = g_coConf.GetParamValue( pcszConfParam, strDBDescr );
if( iFnRes || 0 == strDBDescr.length() ) {
UTL_LOG_F( g_coLog, "dbpool: configuration parameter '%s' not defined", pcszConfParam );
}
/* инициализация пула подклчений к БД */
iRetVal = db_pool_init(&g_coLog, strDBUser, strDBPswd, strDBDescr, iDBPoolSize );
if (iRetVal) {
UTL_LOG_F(g_coLog, "can not initialize DB pool");
}
/* создание списка NASов */
iRetVal = CreateNASList (&g_mapNASList);
if (iRetVal) {
break;
}
/* инициализация пула потоков */
iRetVal = InitThreadPool ();
if (iRetVal) {
break;
}
} while (0);
return iRetVal;
}
示例7: ConnectCoASensor
int ConnectCoASensor (CIPConnector &p_coIPConn) {
int iRetVal = 0;
std::vector<std::string> vectValList;
const char *pcszConfParam; // значение параметра из конфигурации
const char *pcszHostName; // имя удаленного хоста
uint16_t ui16Port; // порт удаленного хоста
int iProtoType; // тип протокола взаимодействия с удаленным хостом
int iFnRes;
do {
// выбираем сведения о сетевом протоколе
pcszConfParam = "coa_sensor_proto";
iRetVal = g_coConf.GetParamValue (pcszConfParam, vectValList);
if (iRetVal) {
iRetVal = -1;
UTL_LOG_F(g_coLog, "configuration parameter '%s' not found",
pcszConfParam);
break;
}
if (0 == stricmp ("TCP", vectValList[0].c_str())) {
iProtoType = IPPROTO_TCP;
} else if (0 == stricmp ("UDP", vectValList[0].c_str())) {
iProtoType = IPPROTO_UDP;
} else {
iRetVal = -1;
UTL_LOG_F(
g_coLog,
"configuration parameter '%s' containts unsuppurted value '%s'",
pcszConfParam,
vectValList[0].c_str());
break;
}
// выбираем имя хоста CoA-сенсора
vectValList.clear();
pcszConfParam = "coa_sensor_addr";
iRetVal = g_coConf.GetParamValue (pcszConfParam, vectValList);
if (iRetVal) {
UTL_LOG_F(
g_coLog,
"configuration parameter '%s' not found",
pcszConfParam);
break;
}
pcszHostName = vectValList[0].c_str();
// выбираем порт CoASensor-а
vectValList.clear();
pcszConfParam = "coa_sensor_port";
iRetVal = g_coConf.GetParamValue (pcszConfParam, vectValList);
if (iRetVal) {
UTL_LOG_F(
g_coLog,
"configuration parameter '%s' not found",
pcszConfParam);
break;
}
ui16Port = atol (vectValList[0].c_str());
/* подключаемся к удаленному хосту */
iFnRes = p_coIPConn.Connect (pcszHostName, ui16Port, iProtoType);
if (iFnRes) {
iRetVal = -1;
UTL_LOG_F(
g_coLog,
"can't connect to CoASensor");
break;
}
} while (0);
return iRetVal;
}