Ver código fonte

有内存泄漏现象。

Jeff 5 anos atrás
pai
commit
71bd291452

+ 30 - 19
scbc.tools/scbc.tools/DataImpl.cpp

@@ -89,18 +89,21 @@ BOOL CDataImpl::Open()
 	if ( !QueryTable("mid"))
 	{
 		sqlite3_exec(m_psqlite3, _CREATE_MID_TABLE_, NULL, NULL, &psqlite_error);
+		Global::WriteTextLog("sqlite3 error:%s,%s",_CREATE_MID_TABLE_, psqlite_error);
 		FREE_MSG;
 	}
 
 	if ( !QueryTable("keys"))
 	{
 		sqlite3_exec(m_psqlite3, _CREATE_KEYS_TABLE_, NULL, NULL, &psqlite_error);
+		Global::WriteTextLog("sqlite3 error:%s,%s",_CREATE_KEYS_TABLE_, psqlite_error);
 		FREE_MSG;
 	}
 
 	if ( !QueryTable("log"))
 	{
 		sqlite3_exec(m_psqlite3, _CREATE_LOG_TABLE_, NULL, NULL, &psqlite_error);
+		Global::WriteTextLog("sqlite3 error:%s,%s",_CREATE_LOG_TABLE_, psqlite_error);
 		FREE_MSG;
 	}
 
@@ -119,7 +122,7 @@ BOOL CDataImpl::ExecteSQL(IN LPCSTR lpSQL)
 {
 	if ( lpSQL == NULL || lpSQL[0] == '\0' )
 	{
-		//Global::WriteTextLog(_T("ExecteSQL:执行语句空!"));
+		Global::WriteTextLog(_T("ExecteSQL:执行语句空!"));
 		return FALSE;
 	}
 
@@ -130,7 +133,7 @@ BOOL CDataImpl::ExecteSQL(IN LPCSTR lpSQL)
 	int sqlite_error = sqlite3_exec(m_psqlite3, lpSQL, NULL, 0, &psqlite_error);
 	if(SQLITE_OK != sqlite_error)
 	{
-		//Global::WriteTextLog(_T("ExecteSQL:%s"), psqlite_error);
+		Global::WriteTextLog("sqlite3 error:%s,%s",lpSQL, psqlite_error);
 		FREE_MSG;
 		return FALSE;
 	}
@@ -142,7 +145,7 @@ BOOL CDataImpl::QueryTable(std::string table)
 {
 	if ( table.size() == 0 )
 	{
-		//Global::WriteTextLog(_T("QueryTable:表名空!"));
+		Global::WriteTextLog(_T("QueryTable:表名空!"));
 		return FALSE;
 	}
 
@@ -159,7 +162,7 @@ BOOL CDataImpl::QueryTable(std::string table)
 	int sqlite_error = sqlite3_get_table(m_psqlite3, szSql, &pazResult, &nRow, &nCol, &psqlite_error);
 	if ( sqlite_error != SQLITE_OK)
 	{
-		//Global::WriteTextLog(_T("QueryTable:%s"), psqlite_error);
+		Global::WriteTextLog("sqlite3 error:%s,%s",szSql, psqlite_error);
 		FREE_MSG;
 		return FALSE;
 	}
@@ -187,7 +190,7 @@ INT CDataImpl::QueryMidInfo(std::string order, STMid &data)
 	int sqlite_error = sqlite3_get_table(m_psqlite3, strSql.c_str(), &pazResult, &nRow, &nCol, &psqlite_error);
 	if ( sqlite_error != SQLITE_OK)
 	{
-		//Global::WriteTextLog(_T("QueryMidInfo:%s"), psqlite_error);
+		Global::WriteTextLog("sqlite3 error:%s,%s",strSql.c_str(), psqlite_error);
 		FREE_MSG;
 		return -1;
 	}
@@ -247,7 +250,7 @@ INT CDataImpl::QueryKeyInfo(std::string sn, STKeys &data)
 	int sqlite_error = sqlite3_get_table(m_psqlite3, strSql.c_str(), &pazResult, &nRow, &nCol, &psqlite_error);
 	if ( sqlite_error != SQLITE_OK)
 	{
-		//Global::WriteTextLog(_T("QueryKeyInfo:%s"), psqlite_error);
+		Global::WriteTextLog("sqlite3 error:%s,%s",strSql.c_str(), psqlite_error);
 		FREE_MSG;
 		return -1;
 	}
@@ -281,7 +284,7 @@ INT CDataImpl::QueryUnReportKeyInfo(std::vector<STKeys> &vtdata)
 	int sqlite_error = sqlite3_get_table(m_psqlite3, strSql.c_str(), &pazResult, &nRow, &nCol, &psqlite_error);
 	if ( sqlite_error != SQLITE_OK)
 	{
-		//Global::WriteTextLog(_T("QueryUnReportKeyInfo:%s"), psqlite_error);
+		Global::WriteTextLog("sqlite3 error:%s,%s",strSql.c_str(), psqlite_error);
 		FREE_MSG;
 		return -1;
 	}
@@ -312,7 +315,7 @@ INT CDataImpl::QueryLogInfo(std::string sn, STLog &data)
 	int sqlite_error = sqlite3_get_table(m_psqlite3, _SELECT_LOG_TABLE_, &pazResult, &nRow, &nCol, &psqlite_error);
 	if ( sqlite_error != SQLITE_OK)
 	{
-		//Global::WriteTextLog(_T("QueryLogInfo:%s"), psqlite_error);
+		Global::WriteTextLog("sqlite3 error:%s,%s",_SELECT_LOG_TABLE_, psqlite_error);
 		FREE_MSG;
 		return -1;
 	}
@@ -356,7 +359,7 @@ INT CDataImpl::QueryUnReportLogInfo(std::vector<STLog> &vtdata)
 	int sqlite_error = sqlite3_get_table(m_psqlite3, strSql.c_str(), &pazResult, &nRow, &nCol, &psqlite_error);
 	if ( sqlite_error != SQLITE_OK)
 	{
-		//Global::WriteTextLog(_T("QueryUnReportLogInfo:%s"), psqlite_error);
+		Global::WriteTextLog("sqlite3 error:%s,%s",strSql.c_str(), psqlite_error);
 		FREE_MSG;
 		return -1;
 	}
@@ -392,7 +395,7 @@ INT CDataImpl::QueryBidInfo(std::string order, BidInfo& binfo)
 	int sqlite_error = sqlite3_get_table(m_psqlite3, szSQL, &pazResult, &nRow, &nCol, &psqlite_error);
 	if ( sqlite_error != SQLITE_OK)
 	{
-		//Global::WriteTextLog(_T("QueryUnReportLogInfo:%s"), psqlite_error);
+		Global::WriteTextLog("sqlite3 error:%s,%s",szSQL, psqlite_error);
 		FREE_MSG;
 		return -1;
 	}
@@ -437,7 +440,7 @@ INT CDataImpl::InsertMidInfo(STMid &data)
 	int sqlite_error = sqlite3_exec(m_psqlite3, strInsert.c_str(), NULL, 0, &psqlite_error);
 	if(SQLITE_OK != sqlite_error)
 	{
-		//Global::WriteTextLog(_T("InsertMidInfo:%s"), psqlite_error);
+		Global::WriteTextLog("sqlite3 error:%s,%s",strInsert.c_str(), psqlite_error);
 		FREE_MSG;
 	}
 
@@ -463,7 +466,7 @@ INT CDataImpl::InsertKeyInfo(STKeys &data)
 	int sqlite_error = sqlite3_exec(m_psqlite3, strInsert.c_str(), NULL, 0, &psqlite_error);
 	if(SQLITE_OK != sqlite_error)
 	{
-		//Global::WriteTextLog(_T("InsertKeyInfo:%s"), psqlite_error);
+		Global::WriteTextLog("sqlite3 error:%s,%s",strInsert.c_str(), psqlite_error);
 		FREE_MSG;
 	}
 
@@ -490,7 +493,7 @@ INT CDataImpl::InsertLogInfo(STLog &data)
 	int sqlite_error = sqlite3_exec(m_psqlite3, strInsert.c_str(), NULL, 0, &psqlite_error);
 	if(SQLITE_OK != sqlite_error)
 	{
-		//Global::WriteTextLog(_T("InsertLogInfo:%s"), psqlite_error);
+		Global::WriteTextLog("sqlite3 error:%s,%s",strInsert.c_str(), psqlite_error);
 		FREE_MSG;
 	}
 
@@ -506,6 +509,7 @@ INT CDataImpl::BatchInsertKeyInfo(std::vector<STKeys> &vtdata)
 	INT nRet = sqlite3_exec(m_psqlite3, "begin;", 0, 0, &psqlite_error);
 	if ( nRet != SQLITE_OK )
 	{
+		Global::WriteTextLog("sqlite3 error:begin,%s", psqlite_error);
 		FREE_MSG;
 		return nRet;
 	}
@@ -530,6 +534,8 @@ INT CDataImpl::BatchInsertKeyInfo(std::vector<STKeys> &vtdata)
 	{
 		// 回滚事务;
 		nRet = sqlite3_exec(m_psqlite3, "rollback;", 0, 0, &psqlite_error);
+		if ( nRet != SQLITE_OK )
+			Global::WriteTextLog("sqlite3 error:rollback,%s",psqlite_error);
 		FREE_MSG;
 		return nRet;
 	}
@@ -537,6 +543,7 @@ INT CDataImpl::BatchInsertKeyInfo(std::vector<STKeys> &vtdata)
 	nRet = sqlite3_exec(m_psqlite3, "commit;", 0, 0, &psqlite_error);
 	if ( nRet != SQLITE_OK )
 	{
+		Global::WriteTextLog("sqlite3 error:commit,%s",psqlite_error);
 		FREE_MSG;
 		return nRet;
 	}
@@ -572,7 +579,7 @@ BOOL CDataImpl::UpdateMidInfo(STMid &data)
 	int sqlite_error = sqlite3_exec(m_psqlite3, strInsert.c_str(), NULL, 0, &psqlite_error);
 	if(SQLITE_OK != sqlite_error)
 	{
-		//Global::WriteTextLog(_T("UpdateMidInfo:%s"), psqlite_error);
+		Global::WriteTextLog("sqlite3 error:%s,%s",strInsert.c_str(), psqlite_error);
 		FREE_MSG;
 		return FALSE;
 	}
@@ -608,7 +615,7 @@ BOOL CDataImpl::UpdateDownloadStatus(std::string order, int status, std::string
 	int sqlite_error = sqlite3_exec(m_psqlite3, strInsert.c_str(), NULL, 0, &psqlite_error);
 	if(SQLITE_OK != sqlite_error)
 	{
-		//Global::WriteTextLog(_T("UpdateDownloadStatus:%s"), psqlite_error);
+		Global::WriteTextLog("sqlite3 error:%s,%s",strInsert.c_str(), psqlite_error);
 		FREE_MSG;
 		return FALSE;
 	}
@@ -631,7 +638,7 @@ BOOL CDataImpl::UpdateKeyCopyStatus(std::string sn)
 	int sqlite_error = sqlite3_exec(m_psqlite3, strInsert.c_str(), NULL, 0, &psqlite_error);
 	if(SQLITE_OK != sqlite_error)
 	{
-		//Global::WriteTextLog(_T("UpdateKeyCopyStatus:%s"), psqlite_error);
+		Global::WriteTextLog("sqlite3 error:%s,%s",strInsert.c_str(), psqlite_error);
 		FREE_MSG;
 		return FALSE;
 	}
@@ -653,7 +660,7 @@ BOOL CDataImpl::UpdateKeyReportStatus(std::string sn)
 	int sqlite_error = sqlite3_exec(m_psqlite3, strInsert.c_str(), NULL, 0, &psqlite_error);
 	if(SQLITE_OK != sqlite_error)
 	{
-		//Global::WriteTextLog(_T("UpdateKeyReportStatus:%s"), psqlite_error);
+		Global::WriteTextLog("sqlite3 error:%s,%s",strInsert.c_str(), psqlite_error);
 		FREE_MSG;
 		return FALSE;
 	}
@@ -670,6 +677,7 @@ BOOL CDataImpl::BatchUpdateKeyReportStatus(std::vector<STKeys> &vtKeys)
 	INT nRet = sqlite3_exec(m_psqlite3, "begin;", 0, 0, &psqlite_error);
 	if ( nRet != SQLITE_OK )
 	{
+		Global::WriteTextLog("sqlite3 error:begin,%s", psqlite_error);
 		FREE_MSG;
 		return FALSE;
 	}
@@ -691,6 +699,8 @@ BOOL CDataImpl::BatchUpdateKeyReportStatus(std::vector<STKeys> &vtKeys)
 	{
 		// 回滚事务;
 		nRet = sqlite3_exec(m_psqlite3, "rollback;", 0, 0, &psqlite_error);
+		if ( nRet != SQLITE_OK )
+			Global::WriteTextLog("sqlite3 error:rollback,%s",psqlite_error);
 		FREE_MSG;
 		return FALSE;
 	}
@@ -698,6 +708,7 @@ BOOL CDataImpl::BatchUpdateKeyReportStatus(std::vector<STKeys> &vtKeys)
 	nRet = sqlite3_exec(m_psqlite3, "commit;", 0, 0, &psqlite_error);
 	if ( nRet != SQLITE_OK )
 	{
+		Global::WriteTextLog("sqlite3 error:commit,%s",psqlite_error);
 		FREE_MSG;
 		return FALSE;
 	}
@@ -721,7 +732,7 @@ BOOL CDataImpl::UpdateLogReportStatus(std::string sn, std::string type)
 	int sqlite_error = sqlite3_exec(m_psqlite3, strInsert.c_str(), NULL, 0, &psqlite_error);
 	if(SQLITE_OK != sqlite_error)
 	{
-		//Global::WriteTextLog(_T("UpdateLogReportStatus:%s"), psqlite_error);
+		Global::WriteTextLog("sqlite3 error:%s,%s",strInsert.c_str(), psqlite_error);
 		FREE_MSG;
 		return FALSE;
 	}
@@ -743,7 +754,7 @@ BOOL CDataImpl::RemoveBidData(std::string order)
 	int sqlite_error = sqlite3_exec(m_psqlite3, szSQL, NULL, 0, &psqlite_error);
 	if(SQLITE_OK != sqlite_error)
 	{
-		//Global::WriteTextLog(_T("UpdateLogReportStatus:%s"), psqlite_error);
+		Global::WriteTextLog("sqlite3 error:%s,%s",szSQL, psqlite_error);
 		FREE_MSG;
 		// 回滚事务;
 		sqlite3_exec(m_psqlite3, "rollback;", 0, 0, &psqlite_error);

+ 7 - 1
scbc.tools/scbc.tools/Global.cpp

@@ -6,6 +6,7 @@
 #pragma comment(lib, "SetupAPI.lib")
 #include "cJSON.h"
 #include <direct.h>
+#include "CritSection.h"
 
 namespace Global
 {
@@ -47,6 +48,9 @@ namespace Global
 
 		_stprintf_s(szPath, _T("%sdb"), g_szCurModuleDir);
 		MKDIR(szPath);
+
+		_stprintf_s(szPath, _T("%slog"), g_szCurModuleDir);
+		MKDIR(szPath);
 	}
 
 	void MKDIR(LPCTSTR dir) 
@@ -98,6 +102,8 @@ namespace Global
 	/************************************************************************/
 	void WriteTextLog(const TCHAR* format, ...)
 	{
+		static ThreadSection cs;
+		AutoThreadSection ats(&cs);
 		// 将日志内容输入到文件中;
 		// 获取今年年份;
 		__time64_t gmt = time(NULL); // 获取当前日历时间(1900-01-01开始的Unix时间戳);
@@ -106,7 +112,7 @@ namespace Global
 
 		// 解析出日志路径;
 		TCHAR szlogpath[MAX_PATH] = { 0 };
-		_stprintf_s(szlogpath, _T("%slog\\Serial Port Log %02d%02d.txt"), g_szCurModuleDir, gmtm.tm_mon + 1, gmtm.tm_mday);
+		_stprintf_s(szlogpath, _T("%slog\\log %02d%02d.txt"), g_szCurModuleDir, gmtm.tm_mon + 1, gmtm.tm_mday);
 		// 打开或创建文件;
 		FILE* fp = NULL;
 		//if (_taccess(szlogpath, 0) != -1)

+ 34 - 6
scbc.tools/scbc.tools/SDK.cpp

@@ -198,7 +198,7 @@ int CSDK::ReportKeyCopyResults(std::string sn)
 		form.insert(std::pair<std::string,std::string>("date", keys.copy_date));
 		CCurlClient curl;
 		curl.Initialize();
-		if ( curl.FormPosts(_host + "/reportlist.do?", form, result,3) == CURLE_OK)
+		if ( curl.FormPost(_host + "/reportlist.do?", form, result,3) == CURLE_OK)
 		{
 			cJSON *pJson = cJSON_Parse(result.c_str());
 			if ( pJson == NULL )
@@ -211,8 +211,10 @@ int CSDK::ReportKeyCopyResults(std::string sn)
 			des = cJSON_GetObjectItem(pJson, "des") ? cJSON_GetObjectItem(pJson, "des")->valuestring: "";
 			if ( _tcsicmp(code.c_str(), "1000") )
 			{
+				cJSON_Delete(pJson);
 				return -7;
 			}
+			cJSON_Delete(pJson);
 
 			// 更新上报状态;
 			nRet = db.UpdateKeyReportStatus(sn);
@@ -254,7 +256,7 @@ int CSDK::BatchReportKeyCopyResults()
 
 	CCurlClient curl;
 	curl.Initialize();
-	if ( curl.FormPosts(_host + "/reportlist.do?", form, result,3) == CURLE_OK)
+	if ( curl.FormPost(_host + "/reportlist.do?", form, result,3) == CURLE_OK)
 	{
 		cJSON *pJson = cJSON_Parse(result.c_str());
 		if ( pJson == NULL )
@@ -267,8 +269,10 @@ int CSDK::BatchReportKeyCopyResults()
 		des = cJSON_GetObjectItem(pJson, "des") ? cJSON_GetObjectItem(pJson, "des")->valuestring: "";
 		if ( _tcsicmp(code.c_str(), "1000") )
 		{
+			cJSON_Delete(pJson);
 			return -7;
 		}
+		cJSON_Delete(pJson);
 
 		// 更新上报状态;
 		nRet = db.BatchUpdateKeyReportStatus(vtkeys);
@@ -349,6 +353,7 @@ bool CSDK::CheckDownload(std::string file, STMid& mid)
 
 int CSDK::GetMidInfo(std::string order, STMid &mid)
 {
+	int nRet = 0;
 	// http获取mid;
 	std::string result;
 	std::string url = _host + "/getofflinelist.do?";
@@ -358,7 +363,7 @@ int CSDK::GetMidInfo(std::string order, STMid &mid)
 	//content.append(Global::g_strMacs);
 	CCurlClient curl;
 	curl.Initialize();
-	if ( curl.Posts(url, content, result) == CURLE_OK)
+	if ( (nRet = curl.Post(url, content, result)) == CURLE_OK)
 	{
 		// 解析json字符串;
 		cJSON *pJson = cJSON_Parse(result.c_str());
@@ -374,12 +379,14 @@ int CSDK::GetMidInfo(std::string order, STMid &mid)
 		if ( _tcsicmp(code.c_str(), "1000") )
 		{
 			cJSON_Delete(pJson);
+			Global::WriteTextLog("getofflinelist.do请求失败,返回内容=%s", result.c_str());
 			return -3;
 		}
 		
 		if ( !pData )
 		{
 			cJSON_Delete(pJson);
+			Global::WriteTextLog("getofflinelist.do请求失败,data空内容=%s", result.c_str());
 			return -4;
 		}
 
@@ -403,6 +410,10 @@ int CSDK::GetMidInfo(std::string order, STMid &mid)
 
 		return 0;
 	}
+	else
+	{
+		Global::WriteTextLog("getofflinelist.do请求错误,错误码=%ld", nRet);
+	}
 
 	// http请求异常;
 	return -1;
@@ -425,6 +436,8 @@ BOOL CSDK::HttpPost(std::string host, std::string context, std::string &result,
 		nRecCode = curl.Posts(host, context, result);
 
 	result = CharEncoding::DeCode_URLUTF8(result.c_str());
+	if ( nRecCode != CURLE_OK )
+		Global::WriteTextLog("https请求错误,错误码=%ld", nRecCode);
 
 	return CURLE_OK == nRecCode;
 }
@@ -445,7 +458,7 @@ BOOL CSDK::GetBidInfo(std::string order, std::string macs)
 	context = pJsonText;
 
 	if (pJsonText)
-		delete pJsonText;
+		free(pJsonText);
 	pJsonText = NULL;
 	cJSON_Delete(pJson);
 	pJson = NULL;
@@ -455,6 +468,7 @@ BOOL CSDK::GetBidInfo(std::string order, std::string macs)
 	BOOL bRet = HttpPost(host, context, result, DATA_JSON);
 	if (!bRet)
 	{
+		Global::WriteTextLog("getMessage.do请求失败");
 		goto end;
 	}
 
@@ -463,6 +477,7 @@ BOOL CSDK::GetBidInfo(std::string order, std::string macs)
 	if (pJson == NULL)
 	{
 		bRet = FALSE;
+		Global::WriteTextLog("getMessage.do Json解析失败:%s", result.c_str());
 		goto end;
 	}
 
@@ -473,19 +488,21 @@ BOOL CSDK::GetBidInfo(std::string order, std::string macs)
 	if (_tcsicmp(code.c_str(), "1000") != 0)
 	{
 		bRet = FALSE;
+		Global::WriteTextLog("getMessage.do Code错误:%s", result.c_str());
 		goto end;
 	}
 
 	if (_host.size() == 0)
 	{
 		bRet = FALSE;
+		Global::WriteTextLog("getMessage.do host错误:%s", result.c_str());
 		goto end;
 	}
 
 end:
 	// 释放Json;
 	if (pJsonText)
-		delete pJsonText;
+		free(pJsonText);
 	pJsonText = NULL;
 	cJSON_Delete(pJson);
 
@@ -500,9 +517,10 @@ int CSDK::ReportDownloadStatus(std::string order)
 	std::string content = "orderNumber=";
 	content.append(order);
 
+	int nRet = 0;
 	CCurlClient curl;
 	curl.Initialize();
-	if ( curl.Posts(url, content, result) == CURLE_OK)
+	if ( ( nRet = curl.Post(url, content, result)) == CURLE_OK)
 	{
 		// 解析json字符串;
 		cJSON *pJson = cJSON_Parse(result.c_str());
@@ -518,6 +536,7 @@ int CSDK::ReportDownloadStatus(std::string order)
 		if ( _tcsicmp(code.c_str(), "1000") && _tcsicmp(code.c_str(), "1006") && _tcsicmp(code.c_str(), "1007") )
 		{
 			cJSON_Delete(pJson);
+			Global::WriteTextLog("getofflinelist.do请求失败,返回内容=%s", result.c_str());
 			return -3;
 		}
 
@@ -526,6 +545,10 @@ int CSDK::ReportDownloadStatus(std::string order)
 
 		return 0;
 	}
+	else
+	{
+		Global::WriteTextLog("getofflinelist.do请求错误,错误码=%ld", nRet);
+	}
 
 	// http请求异常;
 	return -1;
@@ -551,6 +574,7 @@ void CSDK::ParserKey(std::string file, std::vector<STKeys> &vtKyes, STMid &mid)
 	cJSON* pJson = cJSON_Parse((const char*)pdata);
 	if (pJson == NULL)
 	{
+		Global::WriteTextLog("ParserKey Json解析失败");
 		goto end;
 	}
 
@@ -609,6 +633,10 @@ bool CSDK::ParserSNKey(std::string json, SNKeys &snKey)
 
 		bRet = true;
 	}
+	else
+	{
+		Global::WriteTextLog("ParserSNKey Json解析失败");
+	}
 
 	if (pJson)
 		cJSON_Delete(pJson);