Commit 4fe108ec by guanghui.cui

1、增加日志打印 2、gb2312转utf8

parent 994a5e3d
......@@ -78,7 +78,7 @@ bool JsonModule::getPushOrders(IN const char* json,OUT orderObj &order)
// 注意GetParseError()返回的是一个rapidjson::ParseErrorCode类型的枚举值
// 使用函数rapidjson::GetParseError_En()得到错误码的字符串说明,这里的En为English简写
// 函数GetErrorOffset()返回出错发生的位置
LOG(ERROR)<<"JSON parse error:"<<document.GetParseError()<<":"<<document.GetErrorOffset();
LOG(ERROR)<<"getPushOrders JSON parse error:"<<document.GetParseError()<<":"<<document.GetErrorOffset();
return false;
}
else
......@@ -470,7 +470,7 @@ bool JsonModule::isInitData(const std::string &data)
document.Parse(data.c_str()); // 解析,Parse()无返回值,也不会抛异常
if (document.HasParseError()) // 通过HasParseError()来判断解析是否成功
{
LOG(ERROR) << "JSON parse error:" << document.GetParseError() << ":" << document.GetErrorOffset();
LOG(ERROR) << "isInitData JSON parse error:" << document.GetParseError() << ":" << document.GetErrorOffset();
return false;
}
return document["fm_cmd"].GetInt() == 1000;
......@@ -482,7 +482,7 @@ bool JsonModule::isHeartbeatData(IN const char* data)
document.Parse(data); // 解析,Parse()无返回值,也不会抛异常
if (document.HasParseError()) // 通过HasParseError()来判断解析是否成功
{
LOG(ERROR) << "JSON parse error:" << document.GetParseError() << ":" << document.GetErrorOffset();
LOG(ERROR) << "isHeartbeatData JSON parse error:" << document.GetParseError() << ":" << document.GetErrorOffset();
return false;
}
if(document.HasMember("fm_cmd")){
......@@ -498,7 +498,7 @@ bool JsonModule::checkInitData(const std::string &data, int &posListenPort)
document.Parse(data.c_str()); // 解析,Parse()无返回值,也不会抛异常
if (document.HasParseError()) // 通过HasParseError()来判断解析是否成功
{
LOG(ERROR) << "JSON parse error:" << document.GetParseError() << ":" << document.GetErrorOffset();
LOG(ERROR) << "checkInitData JSON parse error:" << document.GetParseError() << ":" << document.GetErrorOffset();
return false;
}
......@@ -596,6 +596,7 @@ bool JsonModule::getOdsResponseData(const std::string &posResponse, const std::s
document1.Parse(orderData.c_str());
if (document.HasParseError() || document1.HasParseError())
{
LOG(ERROR)<<"getOdsResponseData posResponse JSON parse error:"<<document.GetParseError()<<":"<<document.GetErrorOffset();
return false;
}
......@@ -1358,7 +1359,7 @@ int JsonModule::getPushType(IN const char* data)
document.Parse(data); // 解析,Parse()无返回值,也不会抛异常
if (document.HasParseError()) // 通过HasParseError()来判断解析是否成功
{
LOG(ERROR) << "JSON parse error:" << document.GetParseError() << ":" << document.GetErrorOffset();
LOG(ERROR) << "getPushType JSON parse error:" << document.GetParseError() << ":" << document.GetErrorOffset();
return 0;
}
if(document.HasMember("fm_cmd")){
......
......@@ -99,7 +99,7 @@ bool SQLite::isTableExist(sqlite3 *sqDb, std::string strTableName)
int SQLite::isRecordExist(std::string strTable,std::string strKey)
{
char* lpSql = new char[BUFFER_SIZE];
sprintf_s(lpSql,BUFFER_SIZE, "select * from %s where trans_id = '%s'",strTable.c_str(),strKey.c_str());
sprintf(lpSql, "select * from %s where trans_id = '%s'",strTable.c_str(),strKey.c_str());
char** pResult;
int nRow = 0;
int nCol = 0;
......@@ -108,7 +108,6 @@ int SQLite::isRecordExist(std::string strTable,std::string strKey)
if (nResult != SQLITE_OK)
{
LOG(ERROR)<<"sqlite3_get_table error:"<<errMsg;
OutputDebugString(errMsg);
return -1;
}
return nRow;
......
......@@ -74,6 +74,7 @@ void* listen_pos_func(void* arg)
}
}else
{
LOG(INFO)<<"POS send data:"<<posRequestData.data();
// 将POS请求数据转换为中台可接受数据格式
if( jsonTool.convertDataPos2Ods(posRequestData, requestOdsData) )
{
......@@ -238,6 +239,11 @@ int main()
{
LOG(INFO) << "pos response data:"<<tmpBuf;
std::string tmp(tmpBuf);
//pos发送过来的数据为gb2312编码,需要转换为utf8
// std::string tmpUtf8= charset_g2u(tmp);
// LOG(INFO)<<"gb2312 to utf8:"<<back.data();
// jsonTool.getOdsResponseData(tmpUtf8, odsPushData, responseData);
jsonTool.getOdsResponseData(tmp, odsPushData, responseData);
}else
{
......@@ -259,7 +265,9 @@ int main()
}
// TODO待加入重试机制
ods.send(responseData);
LOG(INFO) << "pos response data convert to ODS:"<<responseData;
bool rlt = ods.send(responseData);
LOG(INFO)<<"send result:"<<rlt;
}
}else
......
#include "utility.h"
#include <stdio.h>
#include <stdlib.h>
#include <cstring>
#include <stdarg.h>
#include <iostream>
#include <iconv.h>
#include <string.h>
#ifdef WIN32
#include <Windows.h>
......@@ -10,8 +12,8 @@
#include <unistd.h>
#endif
//函数名: GetProcDir()
//功 能: 获取当前程序的路径
//函数名: GetProcDir()
//功 能: 获取当前程序的路径
std::string GetProcDir()
{
std::string strDir;
......@@ -36,25 +38,56 @@ std::string GetProcDir()
return strDir;
}
#ifdef _DO_NOT_HAVE_S
int sprintf_s(
char *buffer,
size_t sizeOfBuffer,
const char *format ,...)
int charset_convert(const char* charset_from, const char* charset_to, const std::string& string_from, std::string& string_to)
{
va_list ap;
iconv_t cd = iconv_open(charset_to, charset_from);
if (!cd)
{
return -1;
}
va_start(ap, format);
int res = vsprintf(buffer, format, ap);
va_end(ap);
return res;
string_to = "";
int ret = 0;
size_t inbytes = string_from.size();
char* inbuf = const_cast<char*>(string_from.c_str());
while (inbytes > 0)
{
char buffer[2048] = {0};
char *outbuf = buffer;
size_t outbytes = sizeof(buffer) - 1;
ret = iconv(cd, &inbuf, &inbytes, &outbuf, &outbytes);
if (ret == 0)
{
string_to.append(buffer);
}
else
{
break;
}
}
ret = iconv_close(cd);
if (inbytes != 0 || ret != 0)
{
return -1;
}
return 0;
}
#endif
#ifdef WIN32
#else
void OutputDebugString(const char* lpOutputString)
//GB2312码转为UNICODE码
std::string charset_g2u(const std::string& gb2312)
{
std::string utf8;
charset_convert("gb2312", "utf-8", gb2312, utf8);
//std::cout<<"convert res:"<<i<<std::endl;
return utf8;
}
#endif
\ No newline at end of file
//UNICODE码转为GB2312码
std::string charset_u2g(const std::string& utf8)
{
std::string gb2312;
charset_convert( "utf-8","gb2312", utf8, gb2312);
//std::cout<<"convert res:"<<i<<std::endl;
return gb2312;
}
\ No newline at end of file
#include <string>
//函数名: GetProcDir()
//功 能: 获取当前程序的路径
//函数名: GetProcDir()
//功 能: 获取当前程序的路径
std::string GetProcDir();
#ifdef WIN32
#else
void OutputDebugString(const char* lpOutputString);
#endif
//UNICODE码转为GB2312码
std::string charset_u2g(const std::string& utf8);
#ifdef WIN32
#else //LINUX
#define _DO_NOT_HAVE_S
#endif //WIN32
#ifdef _DO_NOT_HAVE_S //如果没有_s版的函数,则启动如下的替换宏
//#define sprintf_s(buffer,size,format, ...) sprintf(buffer,format,__VA_ARGS__)
#include <stdio.h>
#include <stdarg.h>
int sprintf_s(
char *buffer,
size_t sizeOfBuffer,
const char *format ,...); //这个比较特殊,需要真的去实现
#define memcpy_s(dest,num,src,count) memcpy(dest,src,count)
#define fprintf_s fprintf
#define _strdate_s(buf,num) _strdate(buf)
#define strcat_s(dest,num,src) strcat(dest,src)
#define fopen_s(pf,name,mode) *pf=fopen(name,mode)
#define strncpy_s(dest,num,src,count) strncpy(dest,src,count)
#define localtime_s(tm,time) *tm=*localtime(time)
#define _strdup strdup
#else
#define mkdir(pathname,mode) _mkdir(pathname)
#endif
\ No newline at end of file
//GB2312码转为UNICODE码
std::string charset_g2u(const std::string& gb2312);
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment