/********************************************************************************* * Name :glsv_gld_mbcsv_dec_warm_sync_resp * * Description : To decode the message at the warm sync at the standby * Arguments : NCS_MBCSV_CB_ARG - MBCSv callback argument * * Return Values : Success / Error *********************************************************************************/ static uint32_t glsv_gld_mbcsv_dec_warm_sync_resp(GLSV_GLD_CB *gld_cb, NCS_MBCSV_CB_ARG *arg) { uint32_t num_of_async_upd, rc = NCSCC_RC_SUCCESS; uint8_t data[16], *ptr; NCS_MBCSV_ARG ncs_arg; TRACE_ENTER(); /*TBD check for the validity of gld_cb arg */ memset(&ncs_arg, '\0', sizeof(NCS_MBCSV_ARG)); ptr = ncs_dec_flatten_space(&arg->info.decode.i_uba, data, sizeof(int32_t)); num_of_async_upd = ncs_decode_32bit(&ptr); ncs_dec_skip_space(&arg->info.decode.i_uba, 4); if (gld_cb->gld_async_cnt == num_of_async_upd) { goto end; } else { gld_cb_destroy(gld_cb); ncs_arg.i_op = NCS_MBCSV_OP_SEND_DATA_REQ; ncs_arg.i_mbcsv_hdl = gld_cb->mbcsv_handle; ncs_arg.info.send_data_req.i_ckpt_hdl = gld_cb->o_ckpt_hdl; rc = ncs_mbcsv_svc(&ncs_arg); if (rc != NCSCC_RC_SUCCESS) { /* Log */ /* TBD */ goto end; } } end: TRACE_LEAVE(); return rc; }
/**************************************************************************** * Name : gld_se_lib_destroy * * Description : Invoked to destroy the GLD * * * Arguments : * Return Values : NCSCC_RC_SUCCESS/NCSCC_RC_FAILURE.. * * Notes : None. *****************************************************************************/ uns32 gld_se_lib_destroy(NCS_LIB_REQ_INFO *req_info) { GLSV_GLD_CB *gld_cb; if ((gld_cb = (NCSCONTEXT)ncshm_take_hdl(NCS_SERVICE_ID_GLD, gl_gld_hdl)) == NULL) { m_LOG_GLD_HEADLINE(GLD_TAKE_HANDLE_FAILED, NCSFL_SEV_ERROR, __FILE__, __LINE__, 0); return (NCSCC_RC_FAILURE); } else { /* Disconnect from MDS */ gld_mds_shut(gld_cb); saAmfComponentUnregister(gld_cb->amf_hdl, &gld_cb->comp_name, (SaNameT *)NULL); saAmfFinalize(gld_cb->amf_hdl); ncshm_give_hdl(gl_gld_hdl); ncshm_destroy_hdl(NCS_SERVICE_ID_GLD, gl_gld_hdl); m_NCS_IPC_DETACH(&gld_cb->mbx, gld_clear_mbx, gld_cb); gld_cb_destroy(gld_cb); m_MMGR_FREE_GLSV_GLD_CB(gld_cb); } return (NCSCC_RC_SUCCESS); }