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
|