/**************************************************************************** * Name : plms_amf_init * * Description : PLMS initializes AMF for invoking process and registers * the various callback functions. * * Arguments : PLMS_CB - PLMS control block pointer. * * Return Values : NCSCC_RC_SUCCESS/Error Code. * * Notes : None. *****************************************************************************/ SaUint32T plms_amf_init() { PLMS_CB * cb = plms_cb; SaAmfCallbacksT amfCallbacks; SaVersionT amf_version; uint32_t rc = NCSCC_RC_SUCCESS; TRACE_ENTER(); if (cb->nid_started && amf_comp_name_get_set_from_file("PLMD_COMP_NAME_FILE", &cb->comp_name) != NCSCC_RC_SUCCESS) goto done; /* Initialize amf callbacks */ memset(&amfCallbacks, 0, sizeof(SaAmfCallbacksT)); amfCallbacks.saAmfHealthcheckCallback = plms_amf_health_chk_callback; amfCallbacks.saAmfCSISetCallback = plms_amf_CSI_set_callback; amfCallbacks.saAmfComponentTerminateCallback = plms_amf_comp_terminate_callback; amfCallbacks.saAmfCSIRemoveCallback = plms_amf_csi_rmv_callback; m_PLMS_GET_AMF_VER(amf_version); /*Initialize the amf library */ rc = saAmfInitialize(&cb->amf_hdl, &amfCallbacks, &amf_version); if (rc != SA_AIS_OK) { LOG_ER(" plms_amf_init: saAmfInitialize() AMF initialization FAILED\n"); goto done; } LOG_IN(" plms_amf_init: saAmfInitialize() AMF initialization SUCCESS\n"); /* Obtain the amf selection object to wait for amf events */ if (SA_AIS_OK != (rc = saAmfSelectionObjectGet(cb->amf_hdl, &cb->amf_sel_obj))) { LOG_ER("saAmfSelectionObjectGet() FAILED\n"); goto done; } LOG_IN("saAmfSelectionObjectGet() SUCCESS\n"); /* get the component name */ rc = saAmfComponentNameGet(cb->amf_hdl, &cb->comp_name); if (rc != SA_AIS_OK) { LOG_ER(" plmss_amf_init: saAmfComponentNameGet() FAILED\n"); goto done ; } rc = NCSCC_RC_SUCCESS; done: TRACE_LEAVE2("%u, %s", rc, cb->comp_name.value); return rc; } /*End plms_amf_init */
uns32 rde_amf_init(RDE_AMF_CB *rde_amf_cb) { uns32 rc = NCSCC_RC_SUCCESS; SaAisErrorT amf_error = SA_AIS_OK; SaNameT sname; SaAmfCallbacksT amfCallbacks; SaVersionT amf_version; TRACE_ENTER(); if (amf_comp_name_get_set_from_file("RDE_COMP_NAME_FILE", &sname) != NCSCC_RC_SUCCESS) return NCSCC_RC_FAILURE; amfCallbacks.saAmfHealthcheckCallback = rde_saf_health_chk_callback; amfCallbacks.saAmfCSISetCallback = rde_saf_CSI_set_callback; amfCallbacks.saAmfCSIRemoveCallback = rde_saf_CSI_rem_callback; amfCallbacks.saAmfComponentTerminateCallback = rde_saf_comp_terminate_callback; m_RDE_GET_AMF_VER(amf_version); amf_error = saAmfInitialize(&rde_amf_cb->amf_hdl, &amfCallbacks, &amf_version); if (amf_error != SA_AIS_OK) { LOG_ER("saAmfInitialize FAILED %u", amf_error); return NCSCC_RC_FAILURE; } memset(&sname, 0, sizeof(sname)); amf_error = saAmfComponentNameGet(rde_amf_cb->amf_hdl, &sname); if (amf_error != SA_AIS_OK) { LOG_ER("saAmfComponentNameGet FAILED %u", amf_error); return NCSCC_RC_FAILURE; } strcpy((char*)rde_amf_cb->comp_name, (char*)sname.value); amf_error = saAmfSelectionObjectGet(rde_amf_cb->amf_hdl, &rde_amf_cb->amf_fd); if (amf_error != SA_AIS_OK) { LOG_ER("saAmfSelectionObjectGet FAILED %u", amf_error); return NCSCC_RC_FAILURE; } amf_error = saAmfComponentRegister(rde_amf_cb->amf_hdl, &sname, (SaNameT *)NULL); if (amf_error != SA_AIS_OK) { LOG_ER("saAmfComponentRegister FAILED %u", amf_error); return NCSCC_RC_FAILURE; } rc = rde_amf_healthcheck_start(rde_amf_cb); if (rc != NCSCC_RC_SUCCESS) return NCSCC_RC_FAILURE; TRACE_LEAVE2("AMF Initialization SUCCESS......"); return(rc); }
/**************************************************************************** * Name : amf_init * * Description : Initialize AMF for involking process and register * the various callback functions. * * Arguments : immd_cb - IMMD control block pointer. * * Return Values : NCSCC_RC_SUCCESS/NCSCC_RC_FAILURE. * * Notes : None. *****************************************************************************/ uint32_t immd_amf_init(IMMD_CB *immd_cb) { static SaAmfCallbacksT amfCallbacks; SaVersionT amf_version; SaAisErrorT error; uint32_t res = NCSCC_RC_FAILURE; pthread_t thread; pthread_attr_t attr; TRACE_ENTER(); if (immd_cb->nid_started && amf_comp_name_get_set_from_file("IMMD_COMP_NAME_FILE", &immd_cb->comp_name) != NCSCC_RC_SUCCESS) goto done; memset(&amfCallbacks, 0, sizeof(SaAmfCallbacksT)); amfCallbacks.saAmfHealthcheckCallback = immd_saf_hlth_chk_cb; amfCallbacks.saAmfCSISetCallback = immd_saf_csi_set_cb; amfCallbacks.saAmfComponentTerminateCallback = immd_amf_comp_terminate_callback; amfCallbacks.saAmfCSIRemoveCallback = immd_amf_csi_rmv_callback; m_IMMSV_GET_AMF_VER(amf_version); /* * Perform the non blocking part of initialization. * If the AMF implementation of these calls would change and become * synchronous, this code would have to be changed too. */ error = saAmfInitialize(&immd_cb->amf_hdl, &amfCallbacks, &amf_version); if (error != SA_AIS_OK) { LOG_ER("saAmfInitialize failed"); goto done; } error = saAmfComponentNameGet(immd_cb->amf_hdl, &immd_cb->comp_name); if (error != SA_AIS_OK) { LOG_ER("saAmfComponentNameGet failed"); goto done; } error = saAmfSelectionObjectGet(immd_cb->amf_hdl, &immd_cb->amf_sel_obj); if (error != SA_AIS_OK) { LOG_ER("saAmfSelectionObjectGet failed"); goto done; } /* Start a thread to take care of the blocking part of initialization */ pthread_attr_init(&attr); pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); if (pthread_create(&thread, &attr, amf_init_start, NULL) != 0) { LOG_ER("pthread_create FAILED: %s", strerror(errno)); goto done; } pthread_attr_destroy(&attr); res = NCSCC_RC_SUCCESS; done: TRACE_LEAVE2("%u, %s", res, osaf_extended_name_borrow(&immd_cb->comp_name)); return res; }
/************************************************************************** Function: ntfs_amf_register Purpose: Function which registers NTFS with AMF. Input: None Returns: SA_AIS_OK - everything is OK SA_AIS_ERR_* - failure **************************************************************************/ SaAisErrorT ntfs_amf_init() { SaAmfCallbacksT amfCallbacks; SaVersionT amf_version; SaAisErrorT error = SA_AIS_OK; TRACE_ENTER(); if (ntfs_cb->nid_started && amf_comp_name_get_set_from_file("NTFD_COMP_NAME_FILE", &ntfs_cb->comp_name) != NCSCC_RC_SUCCESS) goto done; /* Initialize AMF callbacks */ memset(&amfCallbacks, 0, sizeof(SaAmfCallbacksT)); amfCallbacks.saAmfHealthcheckCallback = amf_health_chk_callback; amfCallbacks.saAmfCSISetCallback = amf_csi_set_callback; amfCallbacks.saAmfComponentTerminateCallback = amf_comp_terminate_callback; amfCallbacks.saAmfCSIRemoveCallback = amf_csi_rmv_callback; amf_version.releaseCode = 'B'; amf_version.majorVersion = 0x01; amf_version.minorVersion = 0x01; /* Initialize the AMF library */ error = saAmfInitialize(&ntfs_cb->amf_hdl, &amfCallbacks, &amf_version); if (error != SA_AIS_OK) { LOG_ER("saAmfInitialize() FAILED: %u", error); goto done; } /* Obtain the AMF selection object to wait for AMF events */ error = saAmfSelectionObjectGet(ntfs_cb->amf_hdl, &ntfs_cb->amfSelectionObject); if (error != SA_AIS_OK) { LOG_ER("saAmfSelectionObjectGet() FAILED: %u", error); goto done; } /* Get the component name */ error = saAmfComponentNameGet(ntfs_cb->amf_hdl, &ntfs_cb->comp_name); if (error != SA_AIS_OK) { LOG_ER("saAmfComponentNameGet() FAILED: %u", error); goto done; } /* Register component with AMF */ error = saAmfComponentRegister(ntfs_cb->amf_hdl, &ntfs_cb->comp_name, (SaNameT *)NULL); if (error != SA_AIS_OK) { LOG_ER("saAmfComponentRegister() FAILED"); goto done; } /* Start AMF healthchecks */ if (ntfs_amf_healthcheck_start() != SA_AIS_OK){ LOG_ER("ntfs_amf_healthcheck_start() FAILED"); error = NCSCC_RC_FAILURE; goto done; } done: TRACE_LEAVE(); return error; }