浏览代码

Z991239-6440 #comment feat: 心跳实体连接主备模式功能改造

Signed-Off-By: commit-hook
刘文涛80174520 1 月之前
父节点
当前提交
9037450b66
共有 2 个文件被更改,包括 40 次插入14 次删除
  1. 37 11
      Module/mod_heartbeat/HeartBeatFSM.cpp
  2. 3 3
      Module/mod_heartbeat/HeartBeatFSM.h

+ 37 - 11
Module/mod_heartbeat/HeartBeatFSM.cpp

@@ -74,7 +74,7 @@ ErrorCodeEnum CHeartBeatFSM::OnInit()
 		LogWarn(Severity_Middle, Error_NotConfig, LOG_EVT_HEARTBEAT_LACK_CENSETTINGS, "打开集中配置失败,请检查集中配置是否存在!");
 		return Error_DevLoadFileFailed;
 	}
-	m_tmpTestFlag = 0;
+	
 
 	m_isCardStore = !sysInfo.strMachineType.Compare("RVC.CardStore", true);
 
@@ -92,8 +92,6 @@ ErrorCodeEnum CHeartBeatFSM::OnInit()
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("CrossUseJS=%d", tmpCrossUseJS);
 	}
 	
-	spConfig->ReadConfigValueInt(GetEntityBase()->GetEntityName(),"TestFlag",m_tmpTestFlag);
-
 	spConfig->ReadConfigValueInt(GetEntityBase()->GetEntityName(), "LongConnInterval", m_longConnInterval);
 	if (m_longConnInterval == 0) {
 		//未配置
@@ -125,7 +123,15 @@ ErrorCodeEnum CHeartBeatFSM::OnInit()
 			m_handShakeConnInterval = intervalTemp;
 		}
 	}
-	
+	int tmpSleepMode = 0;
+	Error =spConfig->ReadConfigValueInt(GetEntityBase()->GetEntityName(), "SleepMode", tmpSleepMode);
+	if(Error ==Error_Succeed){
+		if (tmpSleepMode == 1) {
+			m_bSleepMode = true;
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("SleepMode=%d", tmpSleepMode);
+		}
+	}
+
 	//网络字节序
 	//由于双活改造,改成固定ip,分行服务有处理
 	//m_servIP = "99.1.100.215";
@@ -151,7 +157,7 @@ ErrorCodeEnum CHeartBeatFSM::OnInit()
 	if (!m_strHandShakeUrl.IsNullOrEmpty()) {
 		NewHandShakeTask* task = new NewHandShakeTask(this);
 		Error = this->GetEntityBase()->GetFunction()->PostThreadPoolTask(task);
-		if (rc != Error_Succeed)
+		if (Error != Error_Succeed)
 		{
 			LogError(Severity_Middle, rc, 0, CSimpleStringA::Format("NewHandShakeTask Thread is fail,%d", (int)rc).GetData());
 			m_testResult = Error_InvalidState;//启动心跳线程失败
@@ -410,6 +416,7 @@ int CHeartBeatFSM::DoHandShake()
 			
 			if (!m_pHandShakeConn || !m_pHandShakeConn->IsConnectionOK())
 			{
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("DoHandShake m_pHandShakeConn is disConnection");
 				FSMEvent *e = new FSMEvent(USER_EVT_START);
 				PostEventFIFO(e);
 				break;
@@ -417,12 +424,31 @@ int CHeartBeatFSM::DoHandShake()
 			GetEntityBase()->GetFunction()->SetSysVar("HeartbeatState", "C");
 			m_pHandShakeConn->SendHandShake();
 
-			Sleep(m_longConnInterval);//修改成可配置的时间间隔
-			
-			if (m_tmpTestFlag)
-			{
-				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("send spshell.exe restart event.");
-				LogEvent(Severity_Middle, Event_Req_Framework_Restart, "spshell.exe restart");
+			if (m_bSleepMode) {
+				Sleep(m_longConnInterval);//修改成可配置的时间间隔
+			}
+			else {
+				int sleepTimeInterval = 10000;
+				int remainSleepTime = m_longConnInterval;
+				while (remainSleepTime > 0) {
+					int sleepTime = 0;
+					if (remainSleepTime >= sleepTimeInterval) {
+						sleepTime = sleepTimeInterval;
+					}
+					else {
+						sleepTime = remainSleepTime;
+					}
+					Sleep(sleepTime);
+					remainSleepTime = remainSleepTime - sleepTime;
+					if (!m_pHandShakeConn || !m_pHandShakeConn->IsConnectionOK()) {
+						DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("m_pHandShakeConn is disconnect");
+						break;
+					}
+					else {
+						//DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("m_pHandShakeConn is connect");
+					}
+				}
+
 			}
 		}
 	}

+ 3 - 3
Module/mod_heartbeat/HeartBeatFSM.h

@@ -307,7 +307,7 @@ public:
 	CHeartBeatFSM():m_initTimes(0),m_testResult(Error_Succeed),
 	m_warnLevel(0), m_entErrorList(""), m_nLodCtrFlag(0), m_pHandShakeConn(NULL)
 	,m_pCRAClient(NULL),m_pCISClient(NULL)
-	, m_strHandShakeUrl(""), m_bCrossUseJS(false)
+	, m_strHandShakeUrl(""), m_bCrossUseJS(false), m_bSleepMode(false)
 	,m_longConnInterval(20000),m_handShakeConnInterval(20000), m_ConnectSleepInterval(20000){
 		m_servStrBArr.Init(1);
 	}
@@ -375,7 +375,7 @@ private:
 	bool CheckCRASessionOrToConnect();
 	bool CheckCISSessionOrToConnect();
 	
-	int m_tmpTestFlag;
+	
 	int m_longConnInterval;//长连接时间间隔
 	int m_handShakeConnInterval;//新心跳时间间隔
 	CSimpleStringA m_servStr,m_entErrorList;
@@ -390,7 +390,7 @@ private:
 	int m_nLodCtrFlag;
 	CardReadAdapter::CardReadAdapterService_ClientBase *m_pCRAClient;
 	CardIssuerStore::CardIssuerStoreService_ClientBase* m_pCISClient;
-	bool m_bCrossUseJS;
+	bool m_bCrossUseJS, m_bSleepMode;
 	bool m_isCardStore;
 };
 struct StartTask : public ITaskSp