You need to sign in or sign up before continuing.
Commit 6dc7ea23 by unknown

Fix 1:编译问题修复(编译通过)

parent cd4aa8be
...@@ -179,7 +179,7 @@ void JsonModule::getPushOrders(IN const char* json,OUT std::vector<orderObj> &ve ...@@ -179,7 +179,7 @@ void JsonModule::getPushOrders(IN const char* json,OUT std::vector<orderObj> &ve
bool JsonModule::isInitData(const std::string &data) bool JsonModule::isInitData(const std::string &data)
{ {
rapidjson::Document document; // 定义一个Document对象 rapidjson::Document document; // 定义一个Document对象
document.Parse(json); // 解析,Parse()无返回值,也不会抛异常 document.Parse(data.c_str()); // 解析,Parse()无返回值,也不会抛异常
if (document.HasParseError()) // 通过HasParseError()来判断解析是否成功 if (document.HasParseError()) // 通过HasParseError()来判断解析是否成功
{ {
LOG(ERROR) << "JSON parse error:" << document.GetParseError() << ":" << document.GetErrorOffset(); LOG(ERROR) << "JSON parse error:" << document.GetParseError() << ":" << document.GetErrorOffset();
...@@ -191,17 +191,16 @@ bool JsonModule::isInitData(const std::string &data) ...@@ -191,17 +191,16 @@ bool JsonModule::isInitData(const std::string &data)
bool JsonModule::checkInitData(const std::string &data, int &posListenPort) bool JsonModule::checkInitData(const std::string &data, int &posListenPort)
{ {
rapidjson::Document document; // 定义一个Document对象 rapidjson::Document document; // 定义一个Document对象
document.Parse(data); // 解析,Parse()无返回值,也不会抛异常 document.Parse(data.c_str()); // 解析,Parse()无返回值,也不会抛异常
if (document.HasParseError()) // 通过HasParseError()来判断解析是否成功 if (document.HasParseError()) // 通过HasParseError()来判断解析是否成功
{ {
LOG(ERROR) << "JSON parse error:" << document.GetParseError() << ":" << document.GetErrorOffset(); LOG(ERROR) << "JSON parse error:" << document.GetParseError() << ":" << document.GetErrorOffset();
return false; return false;
} }
if( document["store_id"].GetString().empty() if( !document.HasMember("store_id")
|| document["store_id"].GetString().empty() || !document.HasMember("pos_id")
|| document["pos_id"].GetString().empty() || !document.HasMember("operator_id")
|| document["operator_id"].GetString().empty()
|| !document.HasMember("is_master") || !document.HasMember("is_master")
|| document["listen_port"].GetInt()< 0 ) || document["listen_port"].GetInt()< 0 )
{ {
...@@ -284,8 +283,8 @@ bool JsonModule::getOdsResponseData(const std::string &posResponse, const std::s ...@@ -284,8 +283,8 @@ bool JsonModule::getOdsResponseData(const std::string &posResponse, const std::s
return false; return false;
rapidjson::Document document, document1; rapidjson::Document document, document1;
document.Parse(posResponse); document.Parse(posResponse.c_str());
document1.Parse(orderData); document1.Parse(orderData.c_str());
if (document.HasParseError() || document1.HasParseError()) if (document.HasParseError() || document1.HasParseError())
{ {
return false; return false;
...@@ -331,25 +330,12 @@ bool JsonModule::getOdsResponseData(const std::string &posResponse, const std::s ...@@ -331,25 +330,12 @@ bool JsonModule::getOdsResponseData(const std::string &posResponse, const std::s
bool JsonModule::convertDataPos2Ods(const std::string &data, std::string &result) bool JsonModule::convertDataPos2Ods(const std::string &data, std::string &result)
{ {
return true;
} }
bool JsonModule::convertDataOds2Pos(const std::string &data, std::string &result) bool JsonModule::convertDataOds2Pos(const std::string &data, std::string &result)
{ {
rapidjson::Document data; return true;
document.Parse(posResponse);
document1.Parse(orderData);
if (document.HasParseError() || document1.HasParseError())
{
return false;
}
if( !document.HasMember("status_code")
|| !document1.HasMember("order_id")
|| !document1.HasMember("status") )
{
return false;
}
} }
std::string JsonModule::convertToNewOrderJson(orderObj &obj) std::string JsonModule::convertToNewOrderJson(orderObj &obj)
......
...@@ -56,8 +56,10 @@ void* listen_pos_func(void* arg) ...@@ -56,8 +56,10 @@ void* listen_pos_func(void* arg)
if( server.accept(pos) ) if( server.accept(pos) )
{ {
if( pos.receive(posRequestData) ) char tmpBuf[BUF_SIZE] = {0};
if( pos.read(tmpBuf, sizeof(tmpBuf)) )
{ {
posRequestData = tmpBuf;
// 如果为初始化请求则通过长连接socket发送 // 如果为初始化请求则通过长连接socket发送
if( jsonTool.isInitData(posRequestData) ) if( jsonTool.isInitData(posRequestData) )
{ {
...@@ -76,9 +78,9 @@ void* listen_pos_func(void* arg) ...@@ -76,9 +78,9 @@ void* listen_pos_func(void* arg)
{ {
// 同步阻塞发送到ODS并等待返回 // 同步阻塞发送到ODS并等待返回
TCPClient ods; TCPClient ods;
if( ods.connect(ods_recv_port, ods_ip.c_str()) ) if( ods.doConnect(ods_recv_port, ods_ip.c_str()) )
{ {
if( ods.send(RequestOdsData) ) if( ods.send(requestOdsData) )
{ {
std::string tmp; std::string tmp;
if( ods.receive(tmp) ) if( ods.receive(tmp) )
...@@ -105,7 +107,7 @@ void* listen_pos_func(void* arg) ...@@ -105,7 +107,7 @@ void* listen_pos_func(void* arg)
} }
// TODO待加入重试机制 // TODO待加入重试机制
pos.send(responseData); pos.write(responseData.c_str());
pos.close(); pos.close();
}else }else
{ {
...@@ -121,6 +123,11 @@ void* listen_pos_func(void* arg) ...@@ -121,6 +123,11 @@ void* listen_pos_func(void* arg)
int main() int main()
{ {
/* Mark
* 与ODS通信全部加数据头(长度)
* 与POS通信全部不加数据头
* end*/
signal(SIGPIPE, SIG_IGN); signal(SIGPIPE, SIG_IGN);
// 初始化日志 // 初始化日志
...@@ -152,9 +159,9 @@ int main() ...@@ -152,9 +159,9 @@ int main()
LOG(INFO) << "[ODS]ip地址: " << ods_ip.data() LOG(INFO) << "[ODS]ip地址: " << ods_ip.data()
<< "-推送端口: " << ods_push_port << "-推送端口: " << ods_push_port
<< "-监听端口: " << ods_recv_port; << "-监听端口: " << ods_recv_port;
LOG(INFO) << "[CLIENT]监听端口: " << client_listen_port;
LOG(INFO) << "[POS]ip地址: " << pos_ip LOG(INFO) << "[POS]ip地址: " << pos_ip
<< "-监听端口: " << pos_listen_port; << "-监听端口: " << pos_listen_port;
LOG(INFO) << "[CLIENT]监听端口: " << client_listen_port;
//end //end
// 监听POS请求的线程 // 监听POS请求的线程
...@@ -205,13 +212,14 @@ int main() ...@@ -205,13 +212,14 @@ int main()
if( jsonTool.convertDataOds2Pos(odsPushData, pushPosData) ) if( jsonTool.convertDataOds2Pos(odsPushData, pushPosData) )
{ {
TCPClient pos; TCPClient pos;
if( pos.connect(pos_listen_port, pos_ip.c_str()) ) if( pos.doConnect(pos_listen_port, pos_ip.c_str()) )
{ {
if( pos.send(pushPosData) ) if( pos.write(pushPosData.c_str()) )
{ {
std::string tmp; char tmpBuf[BUF_SIZE] = {0};
if( pos.receive(tmp) ) if( pos.read(tmpBuf,sizeof(tmpBuf)) )
{ {
std::string tmp(tmpBuf);
jsonTool.getOdsResponseData(tmp, odsPushData, responseData); jsonTool.getOdsResponseData(tmp, odsPushData, responseData);
}else }else
{ {
......
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