ack, code review only. One minor comment inline. /Thanks HansN
On 12/04/2015 06:44 AM, Gary Lee wrote: > osaf/services/saf/amf/amfd/ckpt_dec.cc | 68 > ++++++------------ > osaf/services/saf/amf/amfd/ckpt_edu.cc | 55 --------------- > osaf/services/saf/amf/amfd/ckpt_enc.cc | 63 > ++++++----------- > osaf/services/saf/amf/amfd/include/ckpt.h | 3 + > osaf/services/saf/amf/amfd/include/ckpt_edu.h | 3 - > osaf/services/saf/amf/amfd/tests/test_ckpt_enc_dec.cc | 40 ++++++++++- > 6 files changed, 88 insertions(+), 144 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 > @@ -557,6 +557,16 @@ > return status; > } > > +void decode_si_trans(NCS_UBAID *ub, > + AVSV_SI_TRANS_CKPT_MSG *msg, > + const uint16_t peer_version) > +{ > + osaf_decode_sanamet(ub, &msg->sg_name); > + osaf_decode_sanamet(ub, &msg->si_name); > + osaf_decode_sanamet(ub, &msg->min_su_name); > + osaf_decode_sanamet(ub, &msg->max_su_name); > +} > + > /************************************************************************** > * @brief decodes the si transfer parameters > * @param[in] cb > @@ -564,45 +574,30 @@ > *************************************************************************/ > static uint32_t dec_si_trans(AVD_CL_CB *cb, NCS_MBCSV_CB_DEC *dec) > { > - uint32_t status = NCSCC_RC_SUCCESS; > - AVSV_SI_TRANS_CKPT_MSG *si_trans_ckpt; > - AVSV_SI_TRANS_CKPT_MSG dec_si_trans_ckpt; > - EDU_ERR ederror = static_cast<EDU_ERR>(0); > + AVSV_SI_TRANS_CKPT_MSG si_trans_ckpt; > > TRACE_ENTER2("i_action '%u'", dec->i_action); > > - si_trans_ckpt = &dec_si_trans_ckpt; > - > switch (dec->i_action) { > case NCS_MBCSV_ACT_ADD: > - status = m_NCS_EDU_VER_EXEC(&cb->edu_hdl, > avsv_edp_ckpt_msg_si_trans, > - &dec->i_uba, EDP_OP_TYPE_DEC, (AVSV_SI_TRANS_CKPT_MSG > **)&si_trans_ckpt, > - &ederror, dec->i_peer_version); > + decode_si_trans(&dec->i_uba, &si_trans_ckpt, > dec->i_peer_version); > break; > > case NCS_MBCSV_ACT_RMV: > /* Send only key information */ > - status = ncs_edu_exec(&cb->edu_hdl, avsv_edp_ckpt_msg_si_trans, > &dec->i_uba, > - EDP_OP_TYPE_DEC, (AVSV_SI_TRANS_CKPT_MSG > **)&si_trans_ckpt, &ederror, 1, 1); > + osaf_decode_sanamet(&dec->i_uba, &si_trans_ckpt.sg_name); > break; > > default: > osafassert(0); > } > > - if (status != NCSCC_RC_SUCCESS) { > - LOG_ER("%s: decode failed, ederror=%u", __FUNCTION__, ederror); > - return status; > - } > - > - avd_ckpt_si_trans(cb, si_trans_ckpt, dec->i_action); > - > - /* If update is successful, update async update count */ > - if (NCSCC_RC_SUCCESS == status) > - cb->async_updt_cnt.si_trans_updt++; > - > - TRACE_LEAVE2("status '%u'", status); > - return status; > + avd_ckpt_si_trans(cb, &si_trans_ckpt, dec->i_action); > + > + cb->async_updt_cnt.si_trans_updt++; > + > + TRACE_LEAVE(); > + return NCSCC_RC_SUCCESS; > } > > void decode_siass(NCS_UBAID *ub, > @@ -2444,33 +2439,18 @@ > *****************************************************************/ > static uint32_t dec_cs_si_trans(AVD_CL_CB *cb, NCS_MBCSV_CB_DEC *dec, > uint32_t num_of_obj) > { > - uint32_t status = NCSCC_RC_SUCCESS; > - AVSV_SI_TRANS_CKPT_MSG *si_trans_ckpt; > - AVSV_SI_TRANS_CKPT_MSG dec_si_trans_ckpt; > - EDU_ERR ederror = static_cast<EDU_ERR>(0); > + AVSV_SI_TRANS_CKPT_MSG si_trans_ckpt; > uint32_t count = 0; > > TRACE_ENTER(); > > - si_trans_ckpt = &dec_si_trans_ckpt; > - > for (count = 0; count < num_of_obj; count++) { > - status = m_NCS_EDU_VER_EXEC(&cb->edu_hdl, > avsv_edp_ckpt_msg_si_trans, > - &dec->i_uba, EDP_OP_TYPE_DEC, > (AVSV_SI_TRANS_CKPT_MSG **)&si_trans_ckpt, > - &ederror, dec->i_peer_version); > - if (status != NCSCC_RC_SUCCESS) { > - LOG_ER("%s: decode failed, ederror=%u", __FUNCTION__, > ederror); > - } > - > - status = avd_ckpt_si_trans(cb, si_trans_ckpt, dec->i_action); > - > - if (status != NCSCC_RC_SUCCESS) { > - return NCSCC_RC_FAILURE; > - } > + decode_si_trans(&dec->i_uba, &si_trans_ckpt, > dec->i_peer_version); > + avd_ckpt_si_trans(cb, &si_trans_ckpt, dec->i_action); > } > > - TRACE_LEAVE2("status '%u'", status); > - return status; > + TRACE_LEAVE(); > + return NCSCC_RC_SUCCESS; > > } > > diff --git a/osaf/services/saf/amf/amfd/ckpt_edu.cc > b/osaf/services/saf/amf/amfd/ckpt_edu.cc > --- a/osaf/services/saf/amf/amfd/ckpt_edu.cc > +++ b/osaf/services/saf/amf/amfd/ckpt_edu.cc > @@ -73,10 +73,6 @@ > if (rc != NCSCC_RC_SUCCESS) > goto error; > > - rc = m_NCS_EDU_COMPILE_EDP(&cb->edu_hdl, avsv_edp_ckpt_msg_si_trans, > &err); > - if (rc != NCSCC_RC_SUCCESS) > - goto error; > - > return rc; > > error: > @@ -288,8 +284,6 @@ > {EDU_EXEC, ncs_edp_uns32, 0, 0, 0, > (long)&((AVSV_ASYNC_UPDT_CNT *)0)->compcstype_updt, 0, > nullptr}, > {EDU_EXEC, ncs_edp_uns32, 0, 0, 0, > - (long)&((AVSV_ASYNC_UPDT_CNT *)0)->si_trans_updt, 0, nullptr}, > - {EDU_EXEC, ncs_edp_uns32, 0, 0, 0, > (long)&((AVSV_ASYNC_UPDT_CNT *)0)->ng_updt, 0, nullptr}, > > {EDU_END, 0, 0, 0, 0, 0, 0, nullptr}, > @@ -417,52 +411,3 @@ > ptr_data_len, buf_env, op, o_err); > return rc; > } > - > -/****************************************************************** > - * @brief encode/decode rules for si transfer parameters > - * @param[in] hdl > - * @param[in] edu_tkn > - * @param[in] ptr > - * @param[in] ptr_data_len > - * @param[in] buf_env > - * @param[in] op > - * @param[out] o_err > - ******************************************************************/ > -uint32_t avsv_edp_ckpt_msg_si_trans(EDU_HDL *hdl, EDU_TKN *edu_tkn, > - NCSCONTEXT ptr, uint32_t *ptr_data_len, > - EDU_BUF_ENV *buf_env, EDP_OP_TYPE op, EDU_ERR > *o_err) > -{ > - uint32_t rc = NCSCC_RC_SUCCESS; > - AVSV_SI_TRANS_CKPT_MSG *struct_ptr = nullptr, **d_ptr = nullptr; > - > - EDU_INST_SET avsv_ckpt_msg_si_trans_rules[] = { > - {EDU_START, avsv_edp_ckpt_msg_si_trans, 0, 0, 0, > - sizeof(AVSV_SI_TRANS_CKPT_MSG), 0, nullptr}, > - > - {EDU_EXEC, ncs_edp_sanamet, 0, 0, 0, > (long)&((AVSV_SI_TRANS_CKPT_MSG *)0)->sg_name, 0, nullptr}, > - {EDU_EXEC, ncs_edp_sanamet, 0, 0, 0, > (long)&((AVSV_SI_TRANS_CKPT_MSG *)0)->si_name, 0, nullptr}, > - {EDU_EXEC, ncs_edp_sanamet, 0, 0, 0, > (long)&((AVSV_SI_TRANS_CKPT_MSG *)0)->min_su_name, 0, nullptr}, > - {EDU_EXEC, ncs_edp_sanamet, 0, 0, 0, > (long)&((AVSV_SI_TRANS_CKPT_MSG *)0)->max_su_name, 0, nullptr}, > - > - {EDU_END, 0, 0, 0, 0, 0, 0, nullptr}, > - }; > - > - if (op == EDP_OP_TYPE_ENC) { > - struct_ptr = (AVSV_SI_TRANS_CKPT_MSG *)ptr; > - } else if (op == EDP_OP_TYPE_DEC) { > - d_ptr = (AVSV_SI_TRANS_CKPT_MSG **)ptr; > - if (*d_ptr == nullptr) { > - *o_err = EDU_ERR_MEM_FAIL; > - return NCSCC_RC_FAILURE; > - } > - memset(*d_ptr, '\0', sizeof(AVSV_SI_TRANS_CKPT_MSG)); > - struct_ptr = *d_ptr; > - } else { > - struct_ptr = static_cast<AVSV_SI_TRANS_CKPT_MSG*>(ptr); > - } > - > - rc = m_NCS_EDU_RUN_RULES(hdl, edu_tkn, avsv_ckpt_msg_si_trans_rules, > struct_ptr, > - ptr_data_len, buf_env, op, o_err); > - > - return rc; > -} > diff --git a/osaf/services/saf/amf/amfd/ckpt_enc.cc > b/osaf/services/saf/amf/amfd/ckpt_enc.cc > --- a/osaf/services/saf/amf/amfd/ckpt_enc.cc > +++ b/osaf/services/saf/amf/amfd/ckpt_enc.cc > @@ -596,6 +596,16 @@ > return status; > } > > +void encode_si_trans(NCS_UBAID *ub, > + const AVD_SG *sg, > + const uint16_t peer_version) > +{ > + osaf_encode_sanamet(ub, &sg->name); > + osaf_encode_sanamet(ub, &sg->si_tobe_redistributed->name); > + osaf_encode_sanamet(ub, &sg->min_assigned_su->name); > + osaf_encode_sanamet(ub, &sg->max_assigned_su->name); > +} > + > /********************************************************************* > * @brief encodes si transfer parameters > * @param[in] cb > @@ -603,39 +613,26 @@ > ********************************************************************/ > static uint32_t enc_si_trans(AVD_CL_CB *cb, NCS_MBCSV_CB_ENC *enc) > { > - uint32_t status = NCSCC_RC_SUCCESS; > - AVSV_SI_TRANS_CKPT_MSG si_trans_ckpt; > - EDU_ERR ederror = static_cast<EDU_ERR>(0); > TRACE_ENTER2("io_action '%u'", enc->io_action); > > - memset(&si_trans_ckpt, 0, sizeof(AVSV_SI_TRANS_CKPT_MSG)); > - si_trans_ckpt.sg_name = ((AVD_SG > *)(NCS_INT64_TO_PTR_CAST(enc->io_reo_hdl)))->name; [HansN] use static_cast<AVD_SG*> instead of (AVD_SG*) > + const AVD_SG *sg = (AVD_SG *)enc->io_reo_hdl; > > switch (enc->io_action) { > case NCS_MBCSV_ACT_ADD: > - si_trans_ckpt.si_name = ((AVD_SG > *)(NCS_INT64_TO_PTR_CAST(enc->io_reo_hdl)))->si_tobe_redistributed->name; > - si_trans_ckpt.min_su_name = ((AVD_SG > *)(NCS_INT64_TO_PTR_CAST(enc->io_reo_hdl)))->min_assigned_su->name; > - si_trans_ckpt.max_su_name = ((AVD_SG > *)(NCS_INT64_TO_PTR_CAST(enc->io_reo_hdl)))->max_assigned_su->name; > - status = m_NCS_EDU_VER_EXEC(&cb->edu_hdl, > avsv_edp_ckpt_msg_si_trans, > - &enc->io_uba, EDP_OP_TYPE_ENC, &si_trans_ckpt, > &ederror, enc->i_peer_version); > + encode_si_trans(&enc->io_uba, sg, enc->i_peer_version); > break; > > case NCS_MBCSV_ACT_RMV: > /* Send only key information */ > - status = m_NCS_EDU_SEL_VER_EXEC(&cb->edu_hdl, > avsv_edp_ckpt_msg_si_trans, &enc->io_uba, > - EDP_OP_TYPE_ENC, &si_trans_ckpt, &ederror, > enc->i_peer_version, 1, 1); > + osaf_encode_sanamet(&enc->io_uba, &sg->name); > break; > > default: > osafassert(0); > } > > - if (status != NCSCC_RC_SUCCESS) { > - LOG_ER("%s: encode failed, ederror=%u", __FUNCTION__, ederror); > - } > - > - TRACE_LEAVE2("status '%u'", status); > - return status; > + TRACE_LEAVE(); > + return NCSCC_RC_SUCCESS; > } > > void encode_siass(NCS_UBAID *ub, > @@ -2211,35 +2208,19 @@ > *******************************************************************/ > static uint32_t enc_cs_si_trans(AVD_CL_CB *cb, NCS_MBCSV_CB_ENC *enc, > uint32_t *num_of_obj) > { > - uint32_t status = NCSCC_RC_SUCCESS; > - AVSV_SI_TRANS_CKPT_MSG si_trans_ckpt; > - EDU_ERR ederror = static_cast<EDU_ERR>(0); > - > TRACE_ENTER(); > > for (std::map<std::string, AVD_SG*>::const_iterator it = sg_db->begin(); > it != sg_db->end(); it++) { > AVD_SG *sg = it->second; > - if (sg->si_tobe_redistributed != nullptr) { > - si_trans_ckpt.sg_name = sg->name; > - si_trans_ckpt.si_name = sg->si_tobe_redistributed->name; > - si_trans_ckpt.min_su_name = sg->min_assigned_su->name; > - si_trans_ckpt.max_su_name = sg->max_assigned_su->name; > + if (sg->si_tobe_redistributed != nullptr) { > + encode_si_trans(&enc->io_uba, sg, enc->i_peer_version); > + (*num_of_obj)++; > + } > + } > > - status = m_NCS_EDU_VER_EXEC(&cb->edu_hdl, > avsv_edp_ckpt_msg_si_trans, > - &enc->io_uba, EDP_OP_TYPE_ENC, &si_trans_ckpt, > &ederror, > - enc->i_peer_version); > - > - if (status != NCSCC_RC_SUCCESS) { > - LOG_ER("%s: encode failed, ederror=%u", __FUNCTION__, > ederror); > - return status; > - } > - > - (*num_of_obj)++; > - } > - } > - TRACE_LEAVE2("status '%u'", status); > - return status; > + TRACE_LEAVE(); > + return NCSCC_RC_SUCCESS; > } > > > /****************************************************************************\ > diff --git a/osaf/services/saf/amf/amfd/include/ckpt.h > b/osaf/services/saf/amf/amfd/include/ckpt.h > --- a/osaf/services/saf/amf/amfd/include/ckpt.h > +++ b/osaf/services/saf/amf/amfd/include/ckpt.h > @@ -49,6 +49,7 @@ > struct cl_cb_tag; > class AVD_APP; > class AVD_COMP; > +class AVD_SG; > /* > * SU SI Relationship checkpoint encode/decode message structure.. > */ > @@ -160,5 +161,7 @@ > > void encode_siass(NCS_UBAID *ub, const struct avd_su_si_rel_tag *susi, > const uint16_t peer_version); > void decode_siass(NCS_UBAID *ub, struct avsv_su_si_rel_ckpt_msg *susi, > const uint16_t peer_version); > +void encode_si_trans(NCS_UBAID *ub, const AVD_SG *sg, const uint16_t > peer_version); > +void decode_si_trans(NCS_UBAID *ub, AVSV_SI_TRANS_CKPT_MSG *msg, const > uint16_t peer_version); > > #endif > diff --git a/osaf/services/saf/amf/amfd/include/ckpt_edu.h > b/osaf/services/saf/amf/amfd/include/ckpt_edu.h > --- a/osaf/services/saf/amf/amfd/include/ckpt_edu.h > +++ b/osaf/services/saf/amf/amfd/include/ckpt_edu.h > @@ -61,7 +61,4 @@ > NCSCONTEXT ptr, uint32_t > *ptr_data_len, > EDU_BUF_ENV *buf_env, EDP_OP_TYPE > op, EDU_ERR *o_err); > > -uint32_t avsv_edp_ckpt_msg_si_trans(EDU_HDL *hdl, EDU_TKN *edu_tkn, > - NCSCONTEXT ptr, uint32_t > *ptr_data_len, > - EDU_BUF_ENV *buf_env, EDP_OP_TYPE > op, EDU_ERR *o_err); > #endif > diff --git a/osaf/services/saf/amf/amfd/tests/test_ckpt_enc_dec.cc > b/osaf/services/saf/amf/amfd/tests/test_ckpt_enc_dec.cc > --- a/osaf/services/saf/amf/amfd/tests/test_ckpt_enc_dec.cc > +++ b/osaf/services/saf/amf/amfd/tests/test_ckpt_enc_dec.cc > @@ -208,4 +208,42 @@ > ASSERT_EQ(susi_ckpt.csi_add_rem, static_cast<SaBoolT>(0)); > ASSERT_EQ(Amf::to_string(&susi_ckpt.comp_name), "comp_name"); > ASSERT_EQ(Amf::to_string(&susi_ckpt.csi_name), "csi_name"); > -} > \ No newline at end of file > +} > + > +TEST_F(CkptEncDecTest, testEncDecAvdSiTrans) { > + int rc = 0; > + SG_2N sg; > + AVD_SI tobe_redistributed; > + AVD_SU min_assigned_su; > + AVD_SU max_assigned_su; > + std::string sg_name("sg_name"); > + std::string si_name("si_name"); > + std::string min_name("min_name"); > + std::string max_name("max_name"); > + AVSV_SI_TRANS_CKPT_MSG msg; > + > + min_assigned_su.name = *(asSaNameT(min_name)); > + max_assigned_su.name = *(asSaNameT(max_name)); > + tobe_redistributed.name = *(asSaNameT(si_name)); > + sg.name = *(asSaNameT(sg_name)); > + sg.si_tobe_redistributed = &tobe_redistributed; > + sg.min_assigned_su = &min_assigned_su; > + sg.max_assigned_su = &max_assigned_su; > + > + rc = ncs_enc_init_space(&enc.io_uba); > + ASSERT_TRUE(rc == NCSCC_RC_SUCCESS); > + > + enc.io_msg_type = NCS_MBCSV_MSG_ASYNC_UPDATE; > + enc.io_action = NCS_MBCSV_ACT_UPDATE; > + enc.io_reo_hdl = (MBCSV_REO_HDL)&sg; > + enc.io_reo_type = AVSV_CKPT_AVD_SI_TRANS; > + enc.i_peer_version = AVD_MBCSV_SUB_PART_VERSION_4; > + > + encode_si_trans(&enc.io_uba, static_cast<AVD_SG*>(&sg), > enc.i_peer_version); > + decode_si_trans(&enc.io_uba, &msg, enc.i_peer_version); > + > + ASSERT_EQ(Amf::to_string(&msg.sg_name), "sg_name"); > + ASSERT_EQ(Amf::to_string(&msg.si_name), "si_name"); > + ASSERT_EQ(Amf::to_string(&msg.min_su_name), "min_name"); > + ASSERT_EQ(Amf::to_string(&msg.max_su_name), "max_name"); > +} ------------------------------------------------------------------------------ _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel