Files
mir_server/server/LoggerServer/LogConfig.cpp
aixianling 5c9f1dae4a init
2025-01-09 17:45:40 +08:00

143 lines
2.5 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef WIN32
#include "stdafx.h"
#include "LogConfig.h"
CLogConfig::CLogConfig(void)
{
m_sUrl[0] = 0;
m_nGag = 0;
m_nSid = 0;
m_nNumPost = 0;
m_sPUrl[0] = 0;
m_sgKey[0] = 0;
m_sSign[0] = 0;
m_nPort = 0;
}
CLogConfig::~CLogConfig(void)
{
}
char * CLogConfig::ReadConfig()
{
bool Result = false;
CMemoryStream ms;
CCustomLuaPreProcessor pp;
LPCTSTR sFilePath="./Config.txt";
try
{
//从文件加载配置脚本
if ( ms.loadFromFile(sFilePath) <= 0 )
{
return "Config.txt not found ";
}
LPCTSTR sText = pp.parse((LPCTSTR)ms.getMemory(), sFilePath);
//设置脚本内容
if ( !setScript(sText) )
{
return "syntax error ontxt";
}
if(openGlobalTable("Config") ==false)
{
return "Not global table Config";
}
char * pUrl=(char *)getFieldString("login_url");
if(pUrl ==NULL)
{
return "login_url is null";
}
strncpy(m_sUrl,pUrl,sizeof(m_sUrl));
int nGag =0;
int nDef =0;
nGag =getFieldInt("gagtime",&nDef);
if(nGag ==0)
{
return "gagtime is 0";
}
m_nGag = nGag;
int nSid =0;
nSid =getFieldInt("sid",&nDef);
m_nSid = nSid;
int nNumPost =0;
nNumPost =getFieldInt("num",&nDef);
m_nNumPost = nNumPost;
int nPort =0;
nPort =getFieldInt("TcpPort",&nDef);
m_nPort = nPort;
char * pPUrl=(char *)getFieldString("post_url");
if(pPUrl ==NULL)
{
return "post_url is null";
}
strncpy(m_sPUrl,pPUrl,sizeof(m_sPUrl));
char * pgKey=(char *)getFieldString("gkey");
if(pgKey ==NULL)
{
return "gkey is null";
}
strncpy(m_sgKey,pgKey,sizeof(m_sgKey));
char * pSign=(char *)getFieldString("sign");
if(pgKey ==NULL)
{
return "sign is null";
}
strncpy(m_sSign,pSign,sizeof(m_sSign));
m_serverList.clear();
if (feildTableExists("servers") && openFieldTable("servers"))
{
if (enumTableFirst())
{
do
{
int nServerId = ((int)getFieldInt(NULL));
m_serverList.push_back(nServerId);
}while (enumTableNext());
}
closeTable();
}
}
catch (RefString &s)
{
//OutputMsg(rmError, _T("load monster config error: %s"), s.rawStr());
return "Error loadtxt";
}
catch (...)
{
return "Error loadtxt 2";
}
//销毁脚本虚拟机
setScript(NULL);
return NULL;
}
void CLogConfig::ShowError(const LPCTSTR sError)
{
m_sLastErrDesc = sError;
RefString sErr;
sErr = _T("[Configuration Error]");
sErr += sError;
//集中处理错误为了简单起见此处直接抛出异常。异常会在readConfig中被捕获从而立刻跳出对配置的循环读取。
throw sErr;
}
#endif