Эх сурвалжийг харах

Z991239-1128 #comment fix: 规范修改

翟俊伟80258120 5 жил өмнө
parent
commit
d6497a1ebd

+ 19 - 64
Module/mod_CustMngrAuth/CustMngrAuthFSM.cpp

@@ -857,7 +857,7 @@ ErrorCodeEnum CCustMngrAuthFSM::BackupBeforeWriteData(RunInfoParams& runInfoPara
 	if (errCode != Error_Succeed)
 	{
 		Dbg("error: open runcfg failed with errCode(%s)", SpStrError(errCode));
-		RecoverFile(runInfoParam.SrcFile, runInfoParam.BackupFile); // if backup fail, recover
+		BackupFile(runInfoParam.BackupFile, runInfoParam.SrcFile);// if backup fail, recover
 		LeaveCriticalSection(&m_cs);
 	}
 
@@ -871,49 +871,12 @@ ErrorCodeEnum CCustMngrAuthFSM::BackupBeforeWriteData(RunInfoParams& runInfoPara
 
 bool CCustMngrAuthFSM::BackupFile(CSimpleStringA srcFile, CSimpleStringA dstFile)
 {
-	bool backupResult = true;
-	ifstream inFile;
-	ofstream outFile;
-
 	if (!ExistsFile(srcFile.GetData()))
 		return true;
 
-	inFile.open((const char*)srcFile);
-	if (inFile.fail())
-	{
-		Dbg("Open CustMngrAuth.ini failed");
-		inFile.close();
-		return false;
-	}
-	outFile.open((const char*)dstFile);
-	if (outFile.fail())
-	{
-		Dbg("Open CustMngrAuth_bak.ini failed.");
-		backupResult = false;
-	}
-	else {
-		outFile << inFile.rdbuf();
-	}
-	inFile.close();
-	outFile.close();
-	return backupResult;
-}
-
-int CCustMngrAuthFSM::RecoverFile(CSimpleStringA nowFileName, CSimpleStringA backupFileName)
-{
-	ofstream fileOut((const char*)nowFileName, ios::trunc);
-	ifstream fileIn((const char*)backupFileName);
-	if (!(fileOut.fail() || fileIn.fail()))
-	{
-		fileOut << fileIn.rdbuf();
-		fileOut.close();
-		fileIn.close();
-		return 0;
-	}
+	int result = fileutil_copy_file(dstFile.GetData(), srcFile.GetData());
 
-	fileOut.close();
-	fileIn.close();
-	return -1;
+	return (result == 0) ? true : false;
 }
 
 /// <summary>
@@ -1042,9 +1005,10 @@ ErrorCodeEnum CCustMngrAuthFSM::ProcessFeatureData(JsonParams& jsonParam, TempFe
 
 		errCode = spConfig->WriteConfigValue(m_FingerSection.GetData(), customerID.GetData(), jstr);
 		delete[] jstr;
+
 		if (errCode != Error_Succeed)
 		{
-			RecoverFile(runinfoParam.SrcFile, runinfoParam.BackupFile);
+			BackupFile(runinfoParam.BackupFile, runinfoParam.SrcFile);
 			LeaveCriticalSection(&m_cs);
 			errCode = Error_Unexpect;
 		}
@@ -1160,12 +1124,9 @@ ErrorCodeEnum CCustMngrAuthFSM::CollectProcess(SpReqAnsContext<CustMngrAuthServi
 {
 	ErrorCodeEnum errCode = Error_Succeed;
 
-	CAutoArray<CSimpleStringA> imgFullPaths;
-	imgFullPaths.Init(COLLECT_TIMES);
 	ctx->Ans.FingerImgs.Init(COLLECT_TIMES);
-	CSimpleStringA depPath;
+	CSimpleStringA depPath(true);
 	m_pEntity->GetFunction()->GetPath("Dep", depPath);
-	int getImgNum = 0;
 
 	for (int i = 0; i < COLLECT_TIMES; ++i)
 	{
@@ -1174,7 +1135,7 @@ ErrorCodeEnum CCustMngrAuthFSM::CollectProcess(SpReqAnsContext<CustMngrAuthServi
 		if (m_pFingerPrint == NULL || m_pFingerPrint->QuerySessionClosed())
 		{
 			Dbg("m_pFingerPrint is NULL or connection closed.");
-			return errCode;
+			return Error_NoTarget;
 		}
 
 		BroadcastPressFinger(i + 1, true);//press finger
@@ -1187,15 +1148,15 @@ ErrorCodeEnum CCustMngrAuthFSM::CollectProcess(SpReqAnsContext<CustMngrAuthServi
 		{
 			BroadcastPressFinger(i + 1, false);//lift finger
 
-			getImgNum += 1;
 			CBlob data;
-			imgFullPaths[i] = CSimpleStringA::Format("%s" SPLIT_SLASH_STR "%s"
+			CSimpleStringA imgFullPath(true);
+			imgFullPath = CSimpleStringA::Format("%s" SPLIT_SLASH_STR "%s"
 				, depPath.GetData(), collecetAns.imageName.GetData());
-			errCode = GetImgBlob(data, imgFullPaths[i]);
+			errCode = GetImgBlob(data, imgFullPath);
 
 			if (errCode != Error_Succeed)
 			{
-				Dbg("Failed to load finger image.");
+				Dbg("Failed to load finger image, %s", imgFullPath.GetData());
 				errCode = Error_Unexpect;
 				break;
 			}
@@ -1212,24 +1173,17 @@ ErrorCodeEnum CCustMngrAuthFSM::CollectProcess(SpReqAnsContext<CustMngrAuthServi
 				break;
 			}
 			ctx->Ans.FingerImgs[i] = data;
+
+			if (ExistsFileA(imgFullPath))
+				RemoveFileA(imgFullPath);
+
+			if (i == (COLLECT_TIMES - 1))
+				ctx->Ans.feature = collecetAns.feature;
 		}
 		else {
 			Dbg("invoke GetImageAndFeature failed in %dth time, errCode(%s)", i + 1, SpStrError(errCode));
 			break;
 		}
-
-		//third times, get th template success
-		if (i == (COLLECT_TIMES - 1))
-		{
-			ctx->Ans.feature = collecetAns.feature;
-		}
-	}
-
-	//delete bmp files in dep
-	for (int j = 0; j < getImgNum; ++j)
-	{
-		if (ExistsFileA(imgFullPaths[j]))
-			RemoveFileA(imgFullPaths[j]);
 	}
 
 	return errCode;
@@ -1276,7 +1230,6 @@ ErrorCodeEnum CCustMngrAuthFSM::GetImgBlob(CBlob& data, CSimpleStringA imgPath)
 	}
 }
 
-
 #pragma endregion
 
 #pragma region Save fingerprint process
@@ -1299,9 +1252,11 @@ ErrorCodeEnum CCustMngrAuthFSM::SaveFingerPrint(SpReqAnsContext<CustMngrAuthServ
 
 	int fingerIDNum = ctx->Req.FingerIdList.GetCount();
 	Dbg("FingerIDNum=%d", fingerIDNum);
+
 	FeatureData* fd = new FeatureData();
 	fd->FingerIDArray.Init(fingerIDNum);
 	fd->FingerIDLenArray.Init(fingerIDNum);
+
 	char fingerID[20];
 	Json::Value fingerInfo;
 

+ 7 - 18
Module/mod_CustMngrAuth/CustMngrAuthFSM.h

@@ -295,7 +295,7 @@ public:
 	END_FSM_STATE()
 
 	BEGIN_FSM_RULE(CCustMngrAuthFSM, s0)
-		FSM_RULE_ENTRY(s0, s2, USER_EVT_TEST, 0)//oiltest?
+		FSM_RULE_ENTRY(s0, s2, USER_EVT_TEST, 0)
 		FSM_RULE_ENTRY(s0, s1, USER_EVT_INIT, 0)
 		FSM_RULE_ENTRY(s0, FSM_STATE_EXIT, USER_EVT_QUIT, 0)
 		FSM_RULE_ENTRY(s1, s2, USER_EVT_INIT_FINISHED, 0)
@@ -308,10 +308,8 @@ public:
 		FSM_RULE_ENTRY(s2, FSM_STATE_EXIT, USER_EVT_QUIT, 0)
 		FSM_RULE_ENTRY(s3, s2, USER_EVT_EXIT, 0)
 		FSM_RULE_ENTRY(s3, s2, USER_EVT_AUTHORIZE_FINISHED, 0)
-		//FSM_RULE_ENTRY(s3, s2, USER_EVT_AUTHORIZE_CANCEL, 0)
 		FSM_RULE_ENTRY(s4, s2, USER_EVT_COLLECTFINGERPRINT_START, 0)
 		FSM_RULE_ENTRY(s4, s2, USER_EVT_COLLECTFINGERPRINT_FINISHED, 0)
-		//FSM_RULE_ENTRY(s4, s2, USER_EVT_COLLECTFINGERPRINT_CANCEL, 0)
 		FSM_RULE_ENTRY(s4, s2, USER_EVT_SAVEFINGERPRINT_FINISHED, 0)
 		FSM_RULE_ENTRY(s4, s2, USER_EVT_CHECKUKEY_FINISHED, 0)
 		FSM_RULE_ENTRY(s3, FSM_STATE_EXIT, USER_EVT_QUIT, 0)
@@ -369,7 +367,6 @@ public:
 	ErrorCodeEnum SaveFingerPrint(SpReqAnsContext<CustMngrAuthService_SaveFingerPrint_Req, CustMngrAuthService_SaveFingerPrint_Ans>::Pointer);
 	int CompareTime(CSimpleStringA time1, CSimpleStringA time2);
 	int CompareUpdateTime(const char* time1, const char* time2);
-	int RecoverFile(CSimpleStringA nowFileName, CSimpleStringA backupFileName);
 	bool ReadDataIntoMemory(bool& bHasData);
 	void UpdateDataIntoMemory(map<CSimpleStringA, FeatureData*> tempFeature, bool bIsFirstTimeQueryData);
 	string ClearStringSpaceHeadTail(string& line);
@@ -396,7 +393,7 @@ private:
 	DeviceControlService_ClientBase *m_pDeviceControl;
 	FingerPrintService_ClientBase *m_pFingerPrint;
 	MaintainCertificate_ClientBase *m_pMaintainWatcher;
-	FeatureUpdateConn *m_pConnection;//中台连接
+	FeatureUpdateConn *m_pConnection;
 	CSimpleStringA m_FingerSection;
 	CSimpleStringA m_RunInfoPath;
 
@@ -405,7 +402,7 @@ private:
 	int m_TimeLimit;
 	map<CSimpleStringA, FeatureData*> m_featureData;
 
-	CRITICAL_SECTION m_cs;//临界区变量
+	CRITICAL_SECTION m_cs;
 };
 
 class FeatureUpdateConn : public SpSecureClient
@@ -434,11 +431,11 @@ public:
 		m_jsonLen = 0;
 		FeatReq req = { 0 };
 		memcpy(req.BranchID, branchID, 16);
-		memcpy(req.CurrentAgent, currAgent, 16);//续传标志(代表已查到的最后一个客户经理
+		memcpy(req.CurrentAgent, currAgent, 16);//transfer flag
 
 		if (lastTime != NULL)
 		{
-			memcpy(req.UpdateTime, lastTime, 20);//本地指纹数据最新时间
+			memcpy(req.UpdateTime, lastTime, 20);
 			Dbg("req.UpdateTime:%s", req.UpdateTime);
 		}
 
@@ -465,8 +462,7 @@ public:
 			m_GetErrMsg = true;
 			SetEvent(m_hPkgAnswer);
 		}else{
-			//判断result接受buff,resultcode判断,
-			Dbg("pRecvPkg get no errormessage.");
+			Dbg("success, no error message.");
 			string serviceCode = pRecvPkg->GetServiceCode();
 			if (serviceCode == "FETQYREQ")
 			{
@@ -495,8 +491,6 @@ public:
 				}else
 					Dbg("ERROR: getstructlen(FETQYANS) = 0!");
 
-				//设m_pEvt为已通知,使下载线程从挂起中恢复,再设为未通知
-				//isTimeOut = false;
 				SetEvent(m_hPkgAnswer);
 			}else
 				Dbg("ERROR: wrong service code!");
@@ -513,8 +507,6 @@ public:
 	int m_jsonLen;
 };
 
-
-//初始化:检查、配置路径、起特征更新任务
 struct InitTask : public ITaskSp
 {
 	CCustMngrAuthFSM *fsm;
@@ -529,7 +521,6 @@ struct InitTask : public ITaskSp
 	}
 };
 
-//特征定期更新
 struct FeatureUpdateTask : public ITaskSp
 {
 	CCustMngrAuthFSM *fsm;
@@ -542,7 +533,6 @@ struct FeatureUpdateTask : public ITaskSp
 	}
 };
 
-//调用指纹匹配服务,阻塞等待返回
 struct MatchFingerPrintTask : public ITaskSp
 {
 	CCustMngrAuthFSM *fsm;
@@ -557,7 +547,7 @@ struct MatchFingerPrintTask : public ITaskSp
 			AuthorizeFinishedEvent *e = new AuthorizeFinishedEvent();
 			e->ctx = ctx;
 			e->param1 = eErr;
-			fsm->PostEventFIFO(e);//指纹匹配结束,结束授权
+			fsm->PostEventFIFO(e);
 		}
 		else
 		{
@@ -569,7 +559,6 @@ struct MatchFingerPrintTask : public ITaskSp
 	}
 };
 
-//采集指纹
 struct CollectFingerPrintTask : public ITaskSp
 {
 	CCustMngrAuthFSM *fsm;

+ 21 - 0
Module/mod_CustMngrAuth/test/TestCustMngrAuthEntity.cpp

@@ -11,4 +11,25 @@ TEST_CASE_ENTITY_CLASS(CCustMngrAuthEntity, "OpenRunInfoFile")
 TEST_CASE_FSM_CLASS(CCustMngrAuthFSM, "ReadDataIntoMemory")
 {
 	return Error_Succeed;
+}
+
+TEST_CASE_FSM_CLASS(CCustMngrAuthFSM, "BackupFile")
+{
+	CSimpleStringA srcFile = "file.ini";
+	CSimpleStringA dstFile = "file_bak.ini";
+	CSimpleStringA depPath;
+	m_pEntity->GetFunction()->GetPath("Dep", depPath);
+	srcFile = CSimpleStringA::Format("%s\\%s", depPath.GetData(), srcFile.GetData());
+	dstFile = CSimpleStringA::Format("%s\\%s", depPath.GetData(), dstFile.GetData());
+	bool result = BackupFile(srcFile, dstFile);
+
+	return result == true ? Error_Succeed : Error_Unexpect;
+}
+
+TEST_CASE_FSM_CLASS(CCustMngrAuthFSM, "ConnectFingerPrintEntity")
+{
+	LOG_FUNCTION();
+	ErrorCodeEnum errCode = ConnectFingerPrintEntity();
+	
+	return errCode;
 }