static void safTerminate(SaInvocationT invocation, const SaNameT *compName) { SaAisErrorT rc = SA_AIS_OK; if(gClMsgInit) { ClBoolT lockStatus = CL_TRUE; ClTimerTimeOutT timeout = {.tsSec = 0, .tsMilliSec = 0}; clOsalMutexLock(&gClMsgFinalizeLock); while(gClMsgSvcRefCnt > 0) { clOsalCondWait(&gClMsgFinalizeCond, &gClMsgFinalizeLock, timeout); } safMsgFinalize(&lockStatus); if(lockStatus) { clOsalMutexUnlock(&gClMsgFinalizeLock); } } rc = saAmfComponentUnregister(amfHandle, compName, NULL); clCpmClientFinalize(amfHandle); //clCpmResponse(cpmHandle, invocation, CL_OK); saAmfResponse(amfHandle, invocation, SA_AIS_OK); return; } static void clMsgRegisterWithCpm(void) { SaAisErrorT rc = SA_AIS_OK; SaAmfCallbacksT callbacks = {0}; SaVersionT version = {0}; version.releaseCode = 'B'; version.majorVersion = 0x01; version.minorVersion = 0x01; callbacks.saAmfHealthcheckCallback = NULL; callbacks.saAmfComponentTerminateCallback = safTerminate; callbacks.saAmfCSISetCallback = NULL; callbacks.saAmfCSIRemoveCallback = NULL; callbacks.saAmfProtectionGroupTrackCallback = NULL; rc = saAmfInitialize(&amfHandle, &callbacks, &version); if( rc != SA_AIS_OK) { clLogError("MSG", "INI", "saAmfInitialize failed with error code [0x%x].", rc); return ; } rc = saAmfComponentNameGet(amfHandle, &appName); rc = saAmfComponentRegister(amfHandle, &appName, NULL); }
static void safTerminate(SaInvocationT invocation, const SaNameT *compName) { if(gClMsgInit) { ClBoolT lockStatus = CL_TRUE; ClTimerTimeOutT timeout = { 0, 0}; clOsalMutexLock(&gClMsgFinalizeLock); while(gClMsgSvcRefCnt > 0) { clOsalCondWait(&gClMsgFinalizeCond, &gClMsgFinalizeLock, timeout); } safMsgFinalize(&lockStatus); if(lockStatus) { clOsalMutexUnlock(&gClMsgFinalizeLock); } } IGNORE_RETURN(saAmfComponentUnregister(amfHandle, compName, NULL)); clCpmClientFinalize(amfHandle); //clCpmResponse(cpmHandle, invocation, CL_OK); saAmfResponse(amfHandle, invocation, SA_AIS_OK); return; }