Admirable initiatives. I reviewed and I ack for all the patch series. I haven't tested.
Thanks -Nagu > -----Original Message----- > From: Hans Feldt [mailto:hans.fe...@ericsson.com] > Sent: 28 May 2014 18:13 > To: Praveen Malviya; Nagendra Kumar; hans.nordeb...@ericsson.com > Cc: opensaf-devel@lists.sourceforge.net > Subject: [PATCH 1 of 5] amfd: use simple decode in SU ckpt [713] > > osaf/services/saf/amf/amfd/ckpt_dec.cc | 473 > +++++++----------------- > osaf/services/saf/amf/amfd/ckpt_updt.cc | 12 +- > osaf/services/saf/amf/amfd/include/ckpt_updt.h | 2 +- > osaf/services/saf/amf/amfd/include/su.h | 2 +- > 4 files changed, 140 insertions(+), 349 deletions(-) > > > diff --git a/osaf/services/saf/amf/amfd/ckpt_dec.cc > b/osaf/services/saf/amf/amfd/ckpt_dec.cc > --- a/osaf/services/saf/amf/amfd/ckpt_dec.cc > +++ b/osaf/services/saf/amf/amfd/ckpt_dec.cc > @@ -462,8 +462,27 @@ static uint32_t dec_sg_config(AVD_CL_CB > return status; > } > > +static void decode_su(NCS_UBAID *ub, AVD_SU *su, uint16_t peer_version) > +{ > + osaf_decode_sanamet(ub, &su->name); > + osaf_decode_bool(ub, (bool*)&su->saAmfSUPreInstantiable); > + osaf_decode_uint32(ub, (uint32_t*)&su->saAmfSUOperState); > + osaf_decode_uint32(ub, (uint32_t*)&su->saAmfSUAdminState); > + osaf_decode_uint32(ub, (uint32_t*)&su->saAmfSuReadinessState); > + osaf_decode_uint32(ub, (uint32_t*)&su->saAmfSUPresenceState); > + osaf_decode_sanamet(ub, &su->saAmfSUHostedByNode); > + osaf_decode_uint32(ub, &su->saAmfSUNumCurrActiveSIs); > + osaf_decode_uint32(ub, &su->saAmfSUNumCurrStandbySIs); > + osaf_decode_uint32(ub, &su->saAmfSURestartCount); > + osaf_decode_bool(ub, &su->term_state); > + osaf_decode_uint32(ub, (uint32_t*)&su->su_switch); > + osaf_decode_uint32(ub, (uint32_t*)&su->su_act_state); > + > + if (peer_version >= AVD_MBCSV_SUB_PART_VERSION_2) > + osaf_decode_bool(ub, &su->su_is_external); > +} > + > > /************************************************************ > ****************\ > - * Function: dec_su_config > * > * Purpose: Decode entire AVD_SU data.. > * > @@ -478,49 +497,18 @@ static uint32_t dec_sg_config(AVD_CL_CB > > \************************************************************ > **************/ > static uint32_t dec_su_config(AVD_CL_CB *cb, NCS_MBCSV_CB_DEC *dec) > { > - uint32_t status = NCSCC_RC_SUCCESS; > - AVD_SU *su_ptr; > - AVD_SU dec_su; > - EDU_ERR ederror = static_cast<EDU_ERR>(0); > + AVD_SU su; > > TRACE_ENTER2("i_action '%u'", dec->i_action); > > - su_ptr = &dec_su; > - > - /* > - * Check for the action type (whether it is add, rmv or update) and act > - * accordingly. If it is add then create new element, if it is update > - * request then just update data structure, and if it is remove then > - * remove entry from the list. > - */ > - switch (dec->i_action) { > - case NCS_MBCSV_ACT_ADD: > - case NCS_MBCSV_ACT_UPDATE: > - /* Send entire data */ > - status = m_NCS_EDU_VER_EXEC(&cb->edu_hdl, > avsv_edp_ckpt_msg_su, > - &dec->i_uba, EDP_OP_TYPE_DEC, (AVD_SU > **)&su_ptr, &ederror, > - dec->i_peer_version); > - break; > - case NCS_MBCSV_ACT_RMV: > - status = ncs_edu_exec(&cb->edu_hdl, avsv_edp_ckpt_msg_su, > - &dec->i_uba, EDP_OP_TYPE_DEC, (AVD_SU > **)&su_ptr, &ederror, 1, 1); > - break; > - default: > - osafassert(0); > - } > - > - if (status != NCSCC_RC_SUCCESS) { > - LOG_ER("%s: decode failed, ederror=%u", __FUNCTION__, > ederror); > - return status; > - } > - > - status = avd_ckpt_su(cb, su_ptr, dec->i_action); > - > - /* If update is successful, update async update count */ > - if (NCSCC_RC_SUCCESS == status) > + osafassert(dec->i_action == NCS_MBCSV_ACT_UPDATE); > + decode_su(&dec->i_uba, &su, dec->i_peer_version); > + uint32_t status = avd_ckpt_su(cb, &su, dec->i_action); > + > + if (status == NCSCC_RC_SUCCESS) > cb->async_updt_cnt.su_updt++; > > - TRACE_LEAVE2("status '%u'", status); > + TRACE_LEAVE2("status:%u, su_updt:%d", status, cb- > >async_updt_cnt.su_updt); > return status; > } > > @@ -795,7 +783,6 @@ static uint32_t dec_comp_config(AVD_CL_C > } > > > /************************************************************ > ****************\ > - * Function: dec_oper_su > * > * Purpose: Decode Operation SU name. > * > @@ -811,43 +798,27 @@ static uint32_t dec_comp_config(AVD_CL_C > static uint32_t dec_oper_su(AVD_CL_CB *cb, NCS_MBCSV_CB_DEC *dec) > { > uint32_t status = NCSCC_RC_SUCCESS; > - AVD_SU *su_ptr; > - AVD_SU dec_su; > - EDU_ERR ederror = static_cast<EDU_ERR>(0); > + SaNameT name; > > TRACE_ENTER2("i_action '%u'", dec->i_action); > > - su_ptr = &dec_su; > - > - /* > - * In case of both Add and remove request send the operation SU name. > - * We don't have update for this reo_type. > - */ > switch (dec->i_action) { > case NCS_MBCSV_ACT_ADD: > case NCS_MBCSV_ACT_RMV: > - /* Send entire data */ > - status = ncs_edu_exec(&cb->edu_hdl, avsv_edp_ckpt_msg_su, > &dec->i_uba, > - EDP_OP_TYPE_DEC, (AVD_SU **)&su_ptr, > &ederror, 1, 1); > + osaf_decode_sanamet(&dec->i_uba, &name); > break; > - > case NCS_MBCSV_ACT_UPDATE: > default: > osafassert(0); > } > > - if (status != NCSCC_RC_SUCCESS) { > - LOG_ER("%s: decode failed, ederror=%u", __FUNCTION__, > ederror); > - return status; > - } > - > - status = avd_ckpt_su_oper_list(cb, su_ptr, dec->i_action); > - > - /* If update is successful, update async update count */ > + status = avd_ckpt_su_oper_list(&name, dec->i_action); > + > if (NCSCC_RC_SUCCESS == status) > cb->async_updt_cnt.sg_su_oprlist_updt++; > > - TRACE_LEAVE2("status '%u'", status); > + TRACE_LEAVE2("'%s', status '%u', updt %d", > + name.value, status, cb->async_updt_cnt.sg_su_oprlist_updt); > return status; > } > > @@ -1420,7 +1391,6 @@ static uint32_t dec_sg_fsm_state(AVD_CL_ > } > > > /************************************************************ > ****************\ > - * Function: dec_su_preinstan > * > * Purpose: Decode SU preinstatible object. > * > @@ -1435,38 +1405,24 @@ static uint32_t dec_sg_fsm_state(AVD_CL_ > > \************************************************************ > **************/ > static uint32_t dec_su_preinstan(AVD_CL_CB *cb, NCS_MBCSV_CB_DEC *dec) > { > - uint32_t status = NCSCC_RC_SUCCESS; > - AVD_SU *su_ptr; > - AVD_SU dec_su; > - EDU_ERR ederror = static_cast<EDU_ERR>(0); > - AVD_SU *su_struct; > + SaNameT name; > > TRACE_ENTER(); > > - su_ptr = &dec_su; > - > - /* > - * Action in this case is just to update. > - */ > - status = ncs_edu_exec(&cb->edu_hdl, avsv_edp_ckpt_msg_su, > - &dec->i_uba, EDP_OP_TYPE_DEC, (AVD_SU **)&su_ptr, &ederror, > 2, 1, 2); > - > - osafassert(status == NCSCC_RC_SUCCESS); > - > - if (NULL == (su_struct = su_db->find(&su_ptr->name))) > - osafassert(0); > - > - /* Update the fields received in this checkpoint message */ > - su_struct->saAmfSUPreInstantiable = su_ptr->saAmfSUPreInstantiable; > + osaf_decode_sanamet(&dec->i_uba, &name); > + AVD_SU *su = su_db->find(&name); > + osafassert(su != NULL); > + osaf_decode_uint32(&dec->i_uba, (uint32_t*)&su- > >saAmfSUPreInstantiable); > > cb->async_updt_cnt.su_updt++; > > - TRACE_LEAVE2("status '%u'", status); > - return status; > + TRACE_LEAVE2("'%s', saAmfSUPreInstantiable=%u, su_updt:%d", > + name.value, su->saAmfSUPreInstantiable, cb- > >async_updt_cnt.su_updt); > + > + return NCSCC_RC_SUCCESS; > } > > > /************************************************************ > ****************\ > - * Function: dec_su_oper_state > * > * Purpose: Decode SU Operation state. > * > @@ -1481,38 +1437,23 @@ static uint32_t dec_su_preinstan(AVD_CL_ > > \************************************************************ > **************/ > static uint32_t dec_su_oper_state(AVD_CL_CB *cb, NCS_MBCSV_CB_DEC > *dec) > { > - uint32_t status = NCSCC_RC_SUCCESS; > - AVD_SU *su_ptr; > - AVD_SU dec_su; > - EDU_ERR ederror = static_cast<EDU_ERR>(0); > - AVD_SU *su_struct; > + SaNameT name; > > TRACE_ENTER(); > > - su_ptr = &dec_su; > - > - /* > - * Action in this case is just to update. > - */ > - status = ncs_edu_exec(&cb->edu_hdl, avsv_edp_ckpt_msg_su, > - &dec->i_uba, EDP_OP_TYPE_DEC, (AVD_SU **)&su_ptr, &ederror, > 2, 1, 3); > - > - osafassert(status == NCSCC_RC_SUCCESS); > - > - su_struct = avd_su_get_or_create(&su_ptr->name); > - osafassert(su_struct != NULL); > - > - /* Update the fields received in this checkpoint message */ > - su_struct->saAmfSUOperState = su_ptr->saAmfSUOperState; > + osaf_decode_sanamet(&dec->i_uba, &name); > + AVD_SU *su = su_db->find(&name); > + osafassert(su != NULL); > + osaf_decode_uint32(&dec->i_uba, (uint32_t*)&su- > >saAmfSUOperState); > > cb->async_updt_cnt.su_updt++; > > - TRACE_LEAVE2("status '%u'", status); > - return status; > + TRACE_LEAVE2("'%s', saAmfSUOperState=%u, su_updt:%d", > + name.value, su->saAmfSUOperState, cb- > >async_updt_cnt.su_updt); > + return NCSCC_RC_SUCCESS; > } > > > /************************************************************ > ****************\ > - * Function: dec_su_admin_state > * > * Purpose: Decode SU Admin state. > * > @@ -1527,38 +1468,23 @@ static uint32_t dec_su_oper_state(AVD_CL > > \************************************************************ > **************/ > static uint32_t dec_su_admin_state(AVD_CL_CB *cb, NCS_MBCSV_CB_DEC > *dec) > { > - uint32_t status = NCSCC_RC_SUCCESS; > - AVD_SU *su_ptr; > - AVD_SU dec_su; > - EDU_ERR ederror = static_cast<EDU_ERR>(0); > - AVD_SU *su_struct; > + SaNameT name; > > TRACE_ENTER(); > > - su_ptr = &dec_su; > - > - /* > - * Action in this case is just to update. > - */ > - status = ncs_edu_exec(&cb->edu_hdl, avsv_edp_ckpt_msg_su, > - &dec->i_uba, EDP_OP_TYPE_DEC, (AVD_SU **)&su_ptr, &ederror, > 2, 1, 4); > - > - osafassert(status == NCSCC_RC_SUCCESS); > - > - if (NULL == (su_struct = su_db->find(&su_ptr->name))) > - osafassert(0); > - > - /* Update the fields received in this checkpoint message */ > - su_struct->saAmfSUAdminState = su_ptr->saAmfSUAdminState; > + osaf_decode_sanamet(&dec->i_uba, &name); > + AVD_SU *su = su_db->find(&name); > + osafassert(su != NULL); > + osaf_decode_uint32(&dec->i_uba, (uint32_t*)&su- > >saAmfSUAdminState); > > cb->async_updt_cnt.su_updt++; > > - TRACE_LEAVE2("status '%u'", status); > - return status; > + TRACE_LEAVE2("'%s', saAmfSUAdminState=%u, su_updt:%d", > + name.value, su->saAmfSUAdminState, cb- > >async_updt_cnt.su_updt); > + return NCSCC_RC_SUCCESS; > } > > > /************************************************************ > ****************\ > - * Function: dec_su_rediness_state > * > * Purpose: Decode SU Rediness state. > * > @@ -1573,40 +1499,25 @@ static uint32_t dec_su_admin_state(AVD_C > > \************************************************************ > **************/ > static uint32_t dec_su_readiness_state(AVD_CL_CB *cb, NCS_MBCSV_CB_DEC > *dec) > { > - uint32_t status = NCSCC_RC_SUCCESS; > - AVD_SU *su_ptr; > - AVD_SU dec_su; > - EDU_ERR ederror = static_cast<EDU_ERR>(0); > - AVD_SU *su_struct; > + SaNameT name; > > TRACE_ENTER(); > > - su_ptr = &dec_su; > - > - /* > - * Action in this case is just to update. > - */ > - status = ncs_edu_exec(&cb->edu_hdl, avsv_edp_ckpt_msg_su, > - &dec->i_uba, EDP_OP_TYPE_DEC, (AVD_SU **)&su_ptr, &ederror, > 2, 1, 5); > - > - osafassert(status == NCSCC_RC_SUCCESS); > - > - if (NULL == (su_struct = su_db->find(&su_ptr->name))) > - osafassert(0); > - > - /* Update the fields received in this checkpoint message */ > - su_struct->saAmfSuReadinessState = su_ptr->saAmfSuReadinessState; > + osaf_decode_sanamet(&dec->i_uba, &name); > + AVD_SU *su = su_db->find(&name); > + osafassert(su != NULL); > + osaf_decode_uint32(&dec->i_uba, (uint32_t*)&su- > >saAmfSuReadinessState); > > cb->async_updt_cnt.su_updt++; > > - TRACE_LEAVE2("status '%u'", status); > - return status; > + TRACE_LEAVE2("'%s', saAmfSuReadinessState=%u, su_updt:%d", > + name.value, su->saAmfSuReadinessState, cb- > >async_updt_cnt.su_updt); > + return NCSCC_RC_SUCCESS; > } > > > /************************************************************ > ****************\ > - * Function: dec_su_pres_state > - * > - * Purpose: Decode SU Presdece state. > + * > + * Purpose: Decode SU Presence state. > * > * Input: cb - CB pointer. > * dec - Decode arguments passed by MBCSV. > @@ -1619,38 +1530,23 @@ static uint32_t dec_su_readiness_state(A > > \************************************************************ > **************/ > static uint32_t dec_su_pres_state(AVD_CL_CB *cb, NCS_MBCSV_CB_DEC > *dec) > { > - uint32_t status = NCSCC_RC_SUCCESS; > - AVD_SU *su_ptr; > - AVD_SU dec_su; > - EDU_ERR ederror = static_cast<EDU_ERR>(0); > - AVD_SU *su_struct; > + SaNameT name; > > TRACE_ENTER(); > > - su_ptr = &dec_su; > - > - /* > - * Action in this case is just to update. > - */ > - status = ncs_edu_exec(&cb->edu_hdl, avsv_edp_ckpt_msg_su, > - &dec->i_uba, EDP_OP_TYPE_DEC, (AVD_SU **)&su_ptr, &ederror, > 2, 1, 6); > - > - osafassert(status == NCSCC_RC_SUCCESS); > - > - if (NULL == (su_struct = su_db->find(&su_ptr->name))) > - osafassert(0); > - > - /* Update the fields received in this checkpoint message */ > - su_struct->saAmfSUPresenceState = su_ptr->saAmfSUPresenceState; > + osaf_decode_sanamet(&dec->i_uba, &name); > + AVD_SU *su = su_db->find(&name); > + osafassert(su != NULL); > + osaf_decode_uint32(&dec->i_uba, (uint32_t*)&su- > >saAmfSUPresenceState); > > cb->async_updt_cnt.su_updt++; > > - TRACE_LEAVE2("status '%u'", status); > - return status; > + TRACE_LEAVE2("'%s', saAmfSUPresenceState=%u, su_updt:%d", > + name.value, su->saAmfSUPresenceState, cb- > >async_updt_cnt.su_updt); > + return NCSCC_RC_SUCCESS; > } > > > /************************************************************ > ****************\ > - * Function: dec_su_si_curr_active > * > * Purpose: Decode SU Current number of Active SI. > * > @@ -1665,37 +1561,23 @@ static uint32_t dec_su_pres_state(AVD_CL > > \************************************************************ > **************/ > static uint32_t dec_su_si_curr_active(AVD_CL_CB *cb, NCS_MBCSV_CB_DEC > *dec) > { > - uint32_t status = NCSCC_RC_SUCCESS; > - AVD_SU *su_ptr; > - AVD_SU dec_su; > - EDU_ERR ederror = static_cast<EDU_ERR>(0); > - AVD_SU *su_struct; > + SaNameT name; > > TRACE_ENTER(); > > - su_ptr = &dec_su; > - > - /* > - * Action in this case is just to update. > - */ > - status = ncs_edu_exec(&cb->edu_hdl, avsv_edp_ckpt_msg_su, > - &dec->i_uba, EDP_OP_TYPE_DEC, (AVD_SU **)&su_ptr, &ederror, > 2, 1, 8); > - > - osafassert(status == NCSCC_RC_SUCCESS); > - > - if (NULL == (su_struct = su_db->find(&su_ptr->name))) > - osafassert(0); > - > - /* Update the fields received in this checkpoint message */ > - su_struct->saAmfSUNumCurrActiveSIs = su_ptr- > >saAmfSUNumCurrActiveSIs; > + osaf_decode_sanamet(&dec->i_uba, &name); > + AVD_SU *su = su_db->find(&name); > + osafassert(su != NULL); > + osaf_decode_uint32(&dec->i_uba, &su->saAmfSUNumCurrActiveSIs); > > cb->async_updt_cnt.su_updt++; > - TRACE_LEAVE2("status '%u'", status); > - return status; > + > + TRACE_LEAVE2("'%s', saAmfSUNumCurrActiveSIs=%u, su_updt:%d", > + name.value, su->saAmfSUNumCurrActiveSIs, cb- > >async_updt_cnt.su_updt); > + return NCSCC_RC_SUCCESS; > } > > > /************************************************************ > ****************\ > - * Function: dec_su_si_curr_stby > * > * Purpose: Decode SU Current number of Standby SI. > * > @@ -1710,40 +1592,25 @@ static uint32_t dec_su_si_curr_active(AV > > \************************************************************ > **************/ > static uint32_t dec_su_si_curr_stby(AVD_CL_CB *cb, NCS_MBCSV_CB_DEC > *dec) > { > - uint32_t status = NCSCC_RC_SUCCESS; > - AVD_SU *su_ptr; > - AVD_SU dec_su; > - EDU_ERR ederror = static_cast<EDU_ERR>(0); > - AVD_SU *su_struct; > + SaNameT name; > > TRACE_ENTER(); > > - su_ptr = &dec_su; > - > - /* > - * Action in this case is just to update. > - */ > - status = ncs_edu_exec(&cb->edu_hdl, avsv_edp_ckpt_msg_su, > - &dec->i_uba, EDP_OP_TYPE_DEC, (AVD_SU **)&su_ptr, &ederror, > 2, 1, 9); > - > - osafassert(status == NCSCC_RC_SUCCESS); > - > - if (NULL == (su_struct = su_db->find(&su_ptr->name))) > - osafassert(0); > - > - /* Update the fields received in this checkpoint message */ > - su_struct->saAmfSUNumCurrStandbySIs = su_ptr- > >saAmfSUNumCurrStandbySIs; > + osaf_decode_sanamet(&dec->i_uba, &name); > + AVD_SU *su = su_db->find(&name); > + osafassert(su != NULL); > + osaf_decode_uint32(&dec->i_uba, &su- > >saAmfSUNumCurrStandbySIs); > > cb->async_updt_cnt.su_updt++; > > - TRACE_LEAVE2("status '%u'", status); > - return status; > + TRACE_LEAVE2("'%s', saAmfSUNumCurrStandbySIs=%u, su_updt:%d", > + name.value, su->saAmfSUNumCurrStandbySIs, cb- > >async_updt_cnt.su_updt); > + return NCSCC_RC_SUCCESS; > } > > > /************************************************************ > ****************\ > - * Function: dec_su_term_state > - * > - * Purpose: Decode SU Admin state to terminate service. > + * > + * Purpose: Decode SU term state > * > * Input: cb - CB pointer. > * dec - Decode arguments passed by MBCSV. > @@ -1756,37 +1623,23 @@ static uint32_t dec_su_si_curr_stby(AVD_ > > \************************************************************ > **************/ > static uint32_t dec_su_term_state(AVD_CL_CB *cb, NCS_MBCSV_CB_DEC > *dec) > { > - uint32_t status = NCSCC_RC_SUCCESS; > - AVD_SU *su_ptr; > - AVD_SU dec_su; > - EDU_ERR ederror = static_cast<EDU_ERR>(0); > - AVD_SU *su_struct; > + SaNameT name; > > TRACE_ENTER(); > > - su_ptr = &dec_su; > - > - /* > - * Action in this case is just to update. > - */ > - status = ncs_edu_exec(&cb->edu_hdl, avsv_edp_ckpt_msg_su, > - &dec->i_uba, EDP_OP_TYPE_DEC, (AVD_SU **)&su_ptr, &ederror, > 2, 1, 11); > - > - osafassert(status == NCSCC_RC_SUCCESS); > - > - if (NULL == (su_struct = su_db->find(&su_ptr->name))) > - osafassert(0); > - > - /* Update the fields received in this checkpoint message */ > - su_struct->term_state = su_ptr->term_state; > + osaf_decode_sanamet(&dec->i_uba, &name); > + AVD_SU *su = su_db->find(&name); > + osafassert(su != NULL); > + osaf_decode_uint32(&dec->i_uba, (uint32_t*)&su->term_state); > > cb->async_updt_cnt.su_updt++; > - TRACE_LEAVE2("status '%u'", status); > - return status; > + > + TRACE_LEAVE2("'%s', term_state=%u, su_updt:%d", > + name.value, su->term_state, cb->async_updt_cnt.su_updt); > + return NCSCC_RC_SUCCESS; > } > > > /************************************************************ > ****************\ > - * Function: dec_su_switch > * > * Purpose: Decode SU toggle SI. > * > @@ -1801,38 +1654,23 @@ static uint32_t dec_su_term_state(AVD_CL > > \************************************************************ > **************/ > static uint32_t dec_su_switch(AVD_CL_CB *cb, NCS_MBCSV_CB_DEC *dec) > { > - uint32_t status = NCSCC_RC_SUCCESS; > - AVD_SU *su_ptr; > - AVD_SU dec_su; > - EDU_ERR ederror = static_cast<EDU_ERR>(0); > - AVD_SU *su_struct; > + SaNameT name; > > TRACE_ENTER(); > > - su_ptr = &dec_su; > - > - /* > - * Action in this case is just to update. > - */ > - status = ncs_edu_exec(&cb->edu_hdl, avsv_edp_ckpt_msg_su, > - &dec->i_uba, EDP_OP_TYPE_DEC, (AVD_SU **)&su_ptr, &ederror, > 2, 1, 12); > - > - osafassert(status == NCSCC_RC_SUCCESS); > - > - if (NULL == (su_struct = su_db->find(&su_ptr->name))) > - osafassert(0); > - > - /* Update the fields received in this checkpoint message */ > - su_struct->su_switch = su_ptr->su_switch; > + osaf_decode_sanamet(&dec->i_uba, &name); > + AVD_SU *su = su_db->find(&name); > + osafassert(su != NULL); > + osaf_decode_uint32(&dec->i_uba, (uint32_t*)&su->su_switch); > > cb->async_updt_cnt.su_updt++; > > - TRACE_LEAVE2("status '%u'", status); > - return status; > + TRACE_LEAVE2("'%s', su_switch=%u, su_updt:%d", > + name.value, su->su_switch, cb->async_updt_cnt.su_updt); > + return NCSCC_RC_SUCCESS; > } > > > /************************************************************ > ****************\ > - * Function: dec_su_act_state > * > * Purpose: Decode SU action state. > * > @@ -1849,12 +1687,11 @@ static uint32_t dec_su_act_state(AVD_CL_ > { > TRACE_ENTER(); > cb->async_updt_cnt.su_updt++; > - TRACE_LEAVE(); > + TRACE_LEAVE2("su_updt=%u", cb->async_updt_cnt.su_updt); > return NCSCC_RC_SUCCESS; > } > > > /************************************************************ > ****************\ > - * Function: dec_su_restart_count > * > * Purpose: Decode SU Restart count. > * > @@ -1869,34 +1706,20 @@ static uint32_t dec_su_act_state(AVD_CL_ > > \************************************************************ > **************/ > static uint32_t dec_su_restart_count(AVD_CL_CB *cb, NCS_MBCSV_CB_DEC > *dec) > { > - uint32_t status = NCSCC_RC_SUCCESS; > - AVD_SU *su_ptr; > - AVD_SU dec_su; > - EDU_ERR ederror = static_cast<EDU_ERR>(0); > - AVD_SU *su_struct; > + SaNameT name; > > TRACE_ENTER(); > > - su_ptr = &dec_su; > - > - /* > - * Action in this case is just to update. > - */ > - status = ncs_edu_exec(&cb->edu_hdl, avsv_edp_ckpt_msg_su, > - &dec->i_uba, EDP_OP_TYPE_DEC, (AVD_SU **)&su_ptr, &ederror, > 2, 1, 10); > - > - osafassert(status == NCSCC_RC_SUCCESS); > - > - if (NULL == (su_struct = su_db->find(&su_ptr->name))) > - osafassert(0); > - > - /* Update the fields received in this checkpoint message */ > - su_struct->saAmfSURestartCount = su_ptr->saAmfSURestartCount; > + osaf_decode_sanamet(&dec->i_uba, &name); > + AVD_SU *su = su_db->find(&name); > + osafassert(su != NULL); > + osaf_decode_uint32(&dec->i_uba, &su->saAmfSURestartCount); > > cb->async_updt_cnt.su_updt++; > > - TRACE_LEAVE2("status '%u'", status); > - return status; > + TRACE_LEAVE2("'%s', saAmfSURestartCount=%u, su_updt:%d", > + name.value, su->saAmfSURestartCount, cb- > >async_updt_cnt.su_updt); > + return NCSCC_RC_SUCCESS; > } > > > /************************************************************ > ****************\ > @@ -2826,24 +2649,13 @@ static uint32_t dec_cs_sg_config(AVD_CL_ > static uint32_t dec_cs_su_config(AVD_CL_CB *cb, NCS_MBCSV_CB_DEC *dec, > uint32_t num_of_obj) > { > uint32_t status = NCSCC_RC_SUCCESS; > - uint32_t count = 0; > - EDU_ERR ederror = static_cast<EDU_ERR>(0); > - AVD_SU dec_su; > - AVD_SU *su_ptr; > - > - su_ptr = &dec_su; > + AVD_SU su; > > TRACE_ENTER(); > > - /* > - * Walk through the entire list and send the entire list data. > - */ > - for (count = 0; count < num_of_obj; count++) { > - status = m_NCS_EDU_VER_EXEC(&cb->edu_hdl, > avsv_edp_ckpt_msg_su, > - &dec->i_uba, EDP_OP_TYPE_DEC, > (AVD_SU **)&su_ptr, &ederror, > - dec->i_peer_version); > - osafassert(status == NCSCC_RC_SUCCESS); > - status = avd_ckpt_su(cb, su_ptr, dec->i_action); > + for (unsigned i = 0; i < num_of_obj; i++) { > + decode_su(&dec->i_uba, &su, dec->i_peer_version); > + status = avd_ckpt_su(cb, &su, dec->i_action); > osafassert(status == NCSCC_RC_SUCCESS); > } > > @@ -3306,43 +3118,24 @@ static uint32_t dec_cs_oper_su(AVD_CL_CB > { > uint32_t status = NCSCC_RC_SUCCESS; > uint32_t num_of_oper_su, count; > - uint8_t *ptr; > - AVD_SU *su_ptr; > - AVD_SU dec_su; > - EDU_ERR ederror = static_cast<EDU_ERR>(0); > + SaNameT name; > > TRACE_ENTER(); > > - ptr = ncs_dec_flatten_space(&dec->i_uba, (uint8_t > *)&num_of_oper_su, sizeof(uint32_t)); > - num_of_oper_su = ncs_decode_32bit(&ptr); > - ncs_dec_skip_space(&dec->i_uba, sizeof(uint32_t)); > - > - su_ptr = &dec_su; > - > - /* > - * Check for the action type (whether it is add, rmv or update) and act > - * accordingly. If it is add then create new element, if it is update > - * request then just update data structure, and if it is remove then > - * remove entry from the list. > - */ > + osaf_decode_uint32(&dec->i_uba, &num_of_oper_su); > + > for (count = 0; count < num_of_oper_su; count++) { > - status = ncs_edu_exec(&cb->edu_hdl, avsv_edp_ckpt_msg_su, > &dec->i_uba, > - EDP_OP_TYPE_DEC, (AVD_SU **)&su_ptr, > &ederror, 1, 1); > - > - if (status != NCSCC_RC_SUCCESS) { > - LOG_ER("%s: decode failed, ederror=%u", > __FUNCTION__, ederror); > - return status; > - } > - > - status = avd_ckpt_su_oper_list(cb, su_ptr, dec->i_action); > + osaf_decode_sanamet(&dec->i_uba, &name); > + > + status = avd_ckpt_su_oper_list(&name, dec->i_action); > if (status != NCSCC_RC_SUCCESS) { > LOG_ER("%s: avd_ckpt_su_oper_list failed", > __FUNCTION__); > return status; > } > } > > - TRACE_LEAVE2("status '%u'", status); > - return status; > + TRACE_LEAVE2("%d", status); > + return NCSCC_RC_SUCCESS; > } > > > /************************************************************ > ****************\ > diff --git a/osaf/services/saf/amf/amfd/ckpt_updt.cc > b/osaf/services/saf/amf/amfd/ckpt_updt.cc > --- a/osaf/services/saf/amf/amfd/ckpt_updt.cc > +++ b/osaf/services/saf/amf/amfd/ckpt_updt.cc > @@ -266,19 +266,17 @@ done: > * > * > > \************************************************************ > **************/ > -uint32_t avd_ckpt_su_oper_list(AVD_CL_CB *cb, AVD_SU *ckpt_su, > NCS_MBCSV_ACT_TYPE action) > +uint32_t avd_ckpt_su_oper_list(const SaNameT *name, > NCS_MBCSV_ACT_TYPE action) > { > - AVD_SU *su; > + TRACE_ENTER2("'%s'", name->value); > > - TRACE_ENTER2("'%s'", ckpt_su->name.value); > - > - su = su_db->find(&ckpt_su->name); > + AVD_SU *su = su_db->find(name); > osafassert(su); > > if (NCS_MBCSV_ACT_ADD == action) > - avd_sg_su_oper_list_add(cb, su, true); > + avd_sg_su_oper_list_add(avd_cb, su, true); > else if (NCS_MBCSV_ACT_RMV == action) > - avd_sg_su_oper_list_del(cb, su, true); > + avd_sg_su_oper_list_del(avd_cb, su, true); > else > osafassert(0); > > diff --git a/osaf/services/saf/amf/amfd/include/ckpt_updt.h > b/osaf/services/saf/amf/amfd/include/ckpt_updt.h > --- a/osaf/services/saf/amf/amfd/include/ckpt_updt.h > +++ b/osaf/services/saf/amf/amfd/include/ckpt_updt.h > @@ -39,7 +39,7 @@ uint32_t avd_ckpt_app(AVD_CL_CB *cb, AVD > uint32_t avd_ckpt_sg(AVD_CL_CB *cb, AVD_SG *sg, NCS_MBCSV_ACT_TYPE > action); > uint32_t avd_ckpt_su(AVD_CL_CB *cb, AVD_SU *su, NCS_MBCSV_ACT_TYPE > action); > uint32_t avd_ckpt_si(AVD_CL_CB *cb, AVD_SI *si, NCS_MBCSV_ACT_TYPE > action); > -uint32_t avd_ckpt_su_oper_list(AVD_CL_CB *cb, AVD_SU *su_ptr, > NCS_MBCSV_ACT_TYPE action); > +uint32_t avd_ckpt_su_oper_list(const SaNameT *name, > NCS_MBCSV_ACT_TYPE action); > uint32_t avd_ckpt_sg_admin_si(AVD_CL_CB *cb, NCS_UBAID *uba, > NCS_MBCSV_ACT_TYPE action); > uint32_t avd_ckpt_siass(AVD_CL_CB *cb, AVSV_SU_SI_REL_CKPT_MSG > *su_si_ckpt, NCS_MBCSV_CB_DEC *dec); > uint32_t avd_ckpt_si_trans(AVD_CL_CB *cb, AVSV_SI_TRANS_CKPT_MSG > *si_trans, NCS_MBCSV_ACT_TYPE action); > diff --git a/osaf/services/saf/amf/amfd/include/su.h > b/osaf/services/saf/amf/amfd/include/su.h > --- a/osaf/services/saf/amf/amfd/include/su.h > +++ b/osaf/services/saf/amf/amfd/include/su.h > @@ -51,7 +51,7 @@ class AVD_SU { > SaNameT saAmfSUMaintenanceCampaign; > > /* runtime attributes */ > - SaBoolT saAmfSUPreInstantiable; > + SaBoolT saAmfSUPreInstantiable; // TODO(hafe) change to bool > SaAmfOperationalStateT saAmfSUOperState; > SaAmfAdminStateT saAmfSUAdminState; > SaAmfReadinessStateT saAmfSuReadinessState; ------------------------------------------------------------------------------ Time is money. Stop wasting it! Get your web API in 5 minutes. www.restlet.com/download http://p.sf.net/sfu/restlet _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel