소스 검색

Z991239-6309 #comment VtmLoader增加QueryLocalInfo,提供os、ip等相关信息,主要针对安装场景

oilyang 3 달 전
부모
커밋
2861cbd0f6

+ 18 - 0
Module/mod_vtmloader/VtmLoaderFSM.cpp

@@ -327,6 +327,15 @@ unsigned int CVtmLoaderFSM::s0_on_event(FSMEvent* pEvt)
 			GetEntityBase()->GetFunction()->PostThreadPoolTask(pTask);
 		}
 		break;
+	case USER_EVT_QUERY_LOCAL_INFO:
+		pEvt->SetHandled();
+		{
+			QueryLocalInfoEvent* pEvt = dynamic_cast<QueryLocalInfoEvent*>(pEvt);
+			QueryLocalInfoTask* pTask = new QueryLocalInfoTask(this);
+			pTask->ctx = pEvt->ctx;
+			GetEntityBase()->GetFunction()->PostThreadPoolTask(pTask);
+		}
+		break;
 	default:
 		break;
 	}
@@ -3066,4 +3075,13 @@ void CVtmLoaderFSM::OnCentersettingUpdateTimeout(void* pData)
 {
 	GetCenterCfgThread();
 	GetEntityBase()->GetFunction()->ResetTimer(TIMER_CENTERSETTING_UPDATE_CHECK, CENTERSETTING_UPDATE_CHECK_TIME);
+}
+void CVtmLoaderFSM::QueryLocalInfo(SpReqAnsContext<VtmLoaderService_QueryLocalInfo_Req, VtmLoaderService_QueryLocalInfo_Ans>::Pointer ctx)
+{
+#ifdef RVC_OS_WIN
+	ctx->Ans.VtmAppType = "Windows";
+#elif
+	ctx->Ans.VtmAppType = "UOS";
+#endif
+	ctx->Answer(Error_Succeed);
 }

+ 24 - 0
Module/mod_vtmloader/VtmLoaderFSM.h

@@ -21,6 +21,7 @@ enum EvtType
 	USER_EVT_CHECK_DEVICE_ENTITY,
 	USER_EVT_SAVE_TERMINALNO,
 	USER_EVT_DEALWITH_OLD_EVENT,
+	USER_EVT_QUERY_LOCAL_INFO,
 };
 
 enum LoadStage
@@ -167,6 +168,7 @@ public:
 	void CheckDeviceEntity(SpReqAnsContext<VtmLoaderService_CheckDeviceEntity_Req, VtmLoaderService_CheckDeviceEntity_Ans>::Pointer ctx);
 	void SaveTerminalNo(SpReqAnsContext<VtmLoaderService_SaveTerminalNo_Req, VtmLoaderService_SaveTerminalNo_Ans>::Pointer ctx);
 	void DealWithOldEvent(SpReqAnsContext<VtmLoaderService_DealWithOldEvent_Req, VtmLoaderService_DealWithOldEvent_Ans>::Pointer ctx);
+	void QueryLocalInfo(SpReqAnsContext<VtmLoaderService_QueryLocalInfo_Req, VtmLoaderService_QueryLocalInfo_Ans>::Pointer ctx);
 	bool CheckConfigInfoInTestRoom();
 	void SetVideoEntityOK() { m_bMediaControllerOK = true; }
 	bool CheckIfNeedCopyDepFiles();
@@ -268,6 +270,18 @@ public:
 			ctx->Answer(Error_InvalidState);
 	}
 };
+class QueryLocalInfoEvent : public FSMEvent
+{
+public:
+	QueryLocalInfoEvent() : FSMEvent(USER_EVT_QUERY_LOCAL_INFO) {}
+	~QueryLocalInfoEvent() {}
+	SpReqAnsContext<VtmLoaderService_QueryLocalInfo_Req, VtmLoaderService_QueryLocalInfo_Ans>::Pointer ctx;
+	virtual void OnUnhandled()
+	{
+		if (ctx != NULL)
+			ctx->Answer(Error_InvalidState);
+	}
+};
 
 struct NetWorkCheckAndGetSettingTask : public ITaskSp
 {
@@ -343,4 +357,14 @@ struct CopyDepFilesToNewDepPathTask : public ITaskSp
 	{
 		fsm->CopyDepFilesToNewDepPath();
 	}
+};
+struct QueryLocalInfoTask : public ITaskSp
+{
+	CVtmLoaderFSM* fsm;
+	SpReqAnsContext<VtmLoaderService_QueryLocalInfo_Req, VtmLoaderService_QueryLocalInfo_Ans>::Pointer ctx;
+	QueryLocalInfoTask(CVtmLoaderFSM* f) : fsm(f) {}
+	void Process()
+	{
+		fsm->QueryLocalInfo(ctx);
+	}
 };

+ 50 - 0
Module/mod_vtmloader/VtmLoader_client_g.h

@@ -32,6 +32,7 @@ public:
 	}
 	void OnClose(ErrorCodeEnum)
 	{
+		Dbg("session closed.");
 		bSessionClosed = true;
 	}
 	bool QuerySessionClosed()
@@ -303,6 +304,55 @@ public:
 		return Error;
 	}
 
+	ErrorCodeEnum QueryLocalInfo(VtmLoaderService_QueryLocalInfo_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
+	{
+		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
+		CAutoBuffer Buf = SpObject2Buffer(Req);
+		if (m_context.checkEmpty())
+		{
+			m_context.AutoGenerate();
+			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
+			m_context = m_context.upgradeLink();
+		}
+		auto ret = pFunc->AsyncRequest(VtmLoaderService_Method_QueryLocalInfo, VtmLoaderService_MethodSignature_QueryLocalInfo, Buf, spAsyncWait, m_context, dwTimeout);
+		m_context.clear();
+		return ret;
+	}
+	ErrorCodeEnum QueryLocalInfo(VtmLoaderService_QueryLocalInfo_Req &Req, VtmLoaderService_QueryLocalInfo_Ans &Ans, DWORD dwTimeout)
+	{
+		CSmartPointer<IAsynWaitSp> spAsyncWait;
+		ErrorCodeEnum Error = QueryLocalInfo(Req, spAsyncWait, dwTimeout);
+		if (Error == Error_Succeed) {
+			bool bEnd = false;
+			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
+			LOG_ASSERT(Error || bEnd);
+		}
+		return Error;
+	}
+	ErrorCodeEnum QueryLocalInfo(VtmLoaderService_QueryLocalInfo_Req &Req, VtmLoaderService_QueryLocalInfo_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
+	{
+		CSmartPointer<IAsynWaitSp> spAsyncWait;
+		ErrorCodeEnum Error = QueryLocalInfo(Req, spAsyncWait, dwTimeout);
+		if (Error == Error_Succeed) {
+			bool bEnd = false;
+			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
+			LOG_ASSERT(Error || bEnd);
+		}
+		return Error;
+	}
+	ErrorCodeEnum QueryLocalInfo(VtmLoaderService_QueryLocalInfo_Req &Req, VtmLoaderService_QueryLocalInfo_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
+	{
+		CSmartPointer<IAsynWaitSp> spAsyncWait;
+		ErrorCodeEnum Error = QueryLocalInfo(Req, spAsyncWait, dwTimeout);
+		if (Error == Error_Succeed) {
+			bool bEnd = false;
+			CSimpleString str;
+			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
+			LOG_ASSERT(Error || bEnd);
+		}
+		return Error;
+	}
+
 
 	bool SafeDelete()
 	{

+ 33 - 0
Module/mod_vtmloader/VtmLoader_def_g.h

@@ -17,18 +17,21 @@ namespace VtmLoader {
 #define VtmLoaderService_Method_CheckDeviceEntity 3
 #define VtmLoaderService_Method_SaveTerminalNo 4
 #define VtmLoaderService_Method_DealWithOldEvent 5
+#define VtmLoaderService_Method_QueryLocalInfo 6
 
 #define VtmLoaderService_MethodSignature_SetTerminalNo 616197282
 #define VtmLoaderService_MethodSignature_NoticeAppReady -656753321
 #define VtmLoaderService_MethodSignature_CheckDeviceEntity 217616252
 #define VtmLoaderService_MethodSignature_SaveTerminalNo -1817061577
 #define VtmLoaderService_MethodSignature_DealWithOldEvent -1552130738
+#define VtmLoaderService_MethodSignature_QueryLocalInfo 1307554776
 
 #define VtmLoaderService_LogCode_SetTerminalNo "QLR040210F01"
 #define VtmLoaderService_LogCode_NoticeAppReady "QLR040210F02"
 #define VtmLoaderService_LogCode_CheckDeviceEntity "QLR040210F03"
 #define VtmLoaderService_LogCode_SaveTerminalNo "QLR040210F04"
 #define VtmLoaderService_LogCode_DealWithOldEvent "QLR040210F05"
+#define VtmLoaderService_LogCode_QueryLocalInfo "QLR040210F06"
 
 struct VtmLoaderService_SetTerminalNo_Req
 {
@@ -155,6 +158,36 @@ struct VtmLoaderService_DealWithOldEvent_Ans
 
 };
 
+struct VtmLoaderService_QueryLocalInfo_Req
+{
+	CSimpleStringA reqReserved1;
+	CSimpleStringA reqReserved2;
+
+	void Serialize(SpBuffer &Buf)
+	{
+		auto & buf = Buf & reqReserved1 & reqReserved2;
+	}
+
+};
+
+struct VtmLoaderService_QueryLocalInfo_Ans
+{
+	CSimpleStringA IPs;
+	CSimpleStringA MACs;
+	CSimpleStringA DNSs;
+	CSimpleStringA OSVersion;
+	CSimpleStringA VtmAppType;
+	CSimpleStringA AppPath;
+	CSimpleStringA ansReserved1;
+	CSimpleStringA ansReserved2;
+
+	void Serialize(SpBuffer &Buf)
+	{
+		auto & buf = Buf & IPs & MACs & DNSs & OSVersion & VtmAppType & AppPath & ansReserved1 & ansReserved2;
+	}
+
+};
+
 
 ///////////////////////////
 

+ 27 - 0
Module/mod_vtmloader/VtmLoader_server_g.h

@@ -65,6 +65,13 @@ public:
 				Error = Error_MethodSignatureFailed;
 			}
 			break;
+		case VtmLoaderService_Method_QueryLocalInfo:
+			if (dwSignature == VtmLoaderService_MethodSignature_QueryLocalInfo) {
+				bOverlap = true;
+			} else {
+				Error = Error_MethodSignatureFailed;
+			}
+			break;
 		default:
 			Error = Error_MethodNotFound;
 			break;
@@ -101,6 +108,11 @@ public:
 				Error = Error_MethodSignatureFailed;
 			}
 			break;
+		case VtmLoaderService_Method_QueryLocalInfo:
+			if (dwSignature != VtmLoaderService_MethodSignature_QueryLocalInfo) {
+				Error = Error_MethodSignatureFailed;
+			}
+			break;
 		default:
 			Error = Error_MethodNotFound;
 			break;
@@ -133,6 +145,11 @@ public:
 	/// override by user
 	}
 
+	virtual void Handle_QueryLocalInfo(SpReqAnsContext<VtmLoaderService_QueryLocalInfo_Req, VtmLoaderService_QueryLocalInfo_Ans>::Pointer ctx)
+	{
+	/// override by user
+	}
+
 	virtual void OnRequest(CSmartPointer<ITransactionContext> pTransactionContext)
 	{
 		CAutoBuffer Buf;
@@ -199,6 +216,16 @@ public:
 						Handle_DealWithOldEvent(ctx);
 					}
 					break;
+				case VtmLoaderService_Method_QueryLocalInfo:
+					{
+						SpReqAnsContext<VtmLoaderService_QueryLocalInfo_Req,VtmLoaderService_QueryLocalInfo_Ans>::Pointer ctx;
+						ctx.Attach(new SpReqAnsContext<VtmLoaderService_QueryLocalInfo_Req,VtmLoaderService_QueryLocalInfo_Ans>(pTransactionContext));
+						SpBuffer2Object(Buf, ctx->Req);
+						pTransactionContext->GetLinkContext(ctx->link);
+						EntityResource::setLink(ctx->link);
+						Handle_QueryLocalInfo(ctx);
+					}
+					break;
 				default:
 					assert(0);
 					break;

+ 4 - 0
Module/mod_vtmloader/mod_vtmloader.cpp

@@ -29,6 +29,10 @@ void VtmLoaderServerSession::Handle_DealWithOldEvent(SpReqAnsContext<VtmLoaderSe
 {
 	m_pEntity->DealWithOldEvent(ctx);
 }
+void VtmLoaderServerSession::Handle_QueryLocalInfo(SpReqAnsContext<VtmLoaderService_QueryLocalInfo_Req, VtmLoaderService_QueryLocalInfo_Ans>::Pointer ctx)
+{
+	m_pEntity->QueryLocalInfo(ctx);
+}
 
 
 void CVtmLoaderEntity::OnPreStart(CAutoArray<CSimpleStringA> strArgs,CSmartPointer<ITransactionContext> pTransactionContext) 

+ 7 - 0
Module/mod_vtmloader/mod_vtmloader.h

@@ -17,6 +17,7 @@ public:
 	virtual void Handle_CheckDeviceEntity(SpReqAnsContext<VtmLoaderService_CheckDeviceEntity_Req, VtmLoaderService_CheckDeviceEntity_Ans>::Pointer ctx);
 	virtual void Handle_SaveTerminalNo(SpReqAnsContext<VtmLoaderService_SaveTerminalNo_Req, VtmLoaderService_SaveTerminalNo_Ans>::Pointer ctx);
 	virtual void Handle_DealWithOldEvent(SpReqAnsContext<VtmLoaderService_DealWithOldEvent_Req, VtmLoaderService_DealWithOldEvent_Ans>::Pointer ctx);
+	virtual void Handle_QueryLocalInfo(SpReqAnsContext<VtmLoaderService_QueryLocalInfo_Req, VtmLoaderService_QueryLocalInfo_Ans>::Pointer ctx);
 private:
 	CVtmLoaderEntity* m_pEntity;
 };
@@ -80,6 +81,12 @@ public:
 	}
 
 	void DealWithOldEvent(SpReqAnsContext<VtmLoaderService_DealWithOldEvent_Req, VtmLoaderService_DealWithOldEvent_Ans>::Pointer ctx);
+	void QueryLocalInfo(SpReqAnsContext<VtmLoaderService_QueryLocalInfo_Req, VtmLoaderService_QueryLocalInfo_Ans>::Pointer ctx)
+	{
+		QueryLocalInfoEvent* pEvt = new QueryLocalInfoEvent();
+		pEvt->ctx = ctx;
+		m_FSM.PostEventFIFO(pEvt);
+	}
 	
 	virtual void OnEntityStateHook(const char* pszEntityName, const char* pszTriggerEntity, EntityStateEnum eState, EntityStateEnum eLastState);
 	virtual void OnUserStateHook(const char* pszEntityName, DWORD dwState, DWORD dwLastState) { return; }

+ 23 - 0
Module/mod_vtmloader/vtmloader.xml

@@ -67,5 +67,28 @@
 		<param name="isSuccess" type="bool"/>
 	  </res>	  
     </twoway>
+    <!--查询终端本地环境信息-->
+    <twoway name="QueryLocalInfo" overlap="true" method_id="6">
+      <req>
+        <param name="reqReserved1" type="string"/>
+        <param name="reqReserved2" type="string"/>
+      </req>
+      <res>
+        <!--ip地址,如有多个则以';'分隔-->
+        <param name="IPs" type="string"/>
+        <!--mac地址,如有多个则以';'分隔-->
+        <param name="MACs" type="string"/>
+        <!--dns地址,如有多个则以';'分隔-->
+        <param name="DNSs" type="string"/>
+        <!--操作系统相关信息-->
+        <param name="OSVersion" type="string"/>
+        <!--终端应用的版本类型-->
+        <param name="VtmAppType" type="string"/>
+        <!--终端应用运行目录-->
+        <param name="AppPath" type="string"/>
+        <param name="ansReserved1" type="string"/>
+        <param name="ansReserved2" type="string"/>
+      </res>
+    </twoway>
   </class>
 </entity>