143 lines
2.5 KiB
C++
143 lines
2.5 KiB
C++
#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
|