ack, code review only/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                |  59 --------------
>   osaf/services/saf/amf/amfd/ckpt_enc.cc                |  77 
> +++++++-----------
>   osaf/services/saf/amf/amfd/include/ckpt.h             |   3 +
>   osaf/services/saf/amf/amfd/tests/test_ckpt_enc_dec.cc |  43 ++++++++++
>   5 files changed, 105 insertions(+), 145 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
> @@ -605,6 +605,23 @@
>       return status;
>   }
>   
> +void decode_siass(NCS_UBAID *ub,
> +     AVSV_SU_SI_REL_CKPT_MSG *su_si_ckpt,
> +     const uint16_t peer_version)
> +{
> +     osaf_decode_sanamet(ub, &su_si_ckpt->su_name);
> +     osaf_decode_sanamet(ub, &su_si_ckpt->si_name);
> +     osaf_decode_uint32(ub, reinterpret_cast<uint32_t*>(&su_si_ckpt->state));
> +     osaf_decode_uint32(ub, &su_si_ckpt->fsm);
> +     if (peer_version >= AVD_MBCSV_SUB_PART_VERSION_3) {
> +             bool csi_add_rem;
> +             osaf_decode_bool(ub, &csi_add_rem);
> +             su_si_ckpt->csi_add_rem = static_cast<SaBoolT>(csi_add_rem);
> +             osaf_decode_sanamet(ub, &su_si_ckpt->comp_name);
> +             osaf_decode_sanamet(ub, &su_si_ckpt->csi_name);
> +     };
> +}
> +
>   
> /****************************************************************************\
>    * Function: dec_siass
>    *
> @@ -621,14 +638,10 @@
>   \**************************************************************************/
>   static uint32_t dec_siass(AVD_CL_CB *cb, NCS_MBCSV_CB_DEC *dec)
>   {
> -     uint32_t status = NCSCC_RC_SUCCESS;
> -     AVSV_SU_SI_REL_CKPT_MSG *su_si_ckpt;
> -     AVSV_SU_SI_REL_CKPT_MSG dec_su_si_ckpt;
> -     EDU_ERR ederror = static_cast<EDU_ERR>(0);
> +     AVSV_SU_SI_REL_CKPT_MSG su_si_ckpt;
>   
>       TRACE_ENTER2("i_action '%u'", dec->i_action);
>   
> -     su_si_ckpt = &dec_su_si_ckpt;
>       /*
>        * 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
> @@ -638,34 +651,23 @@
>       switch (dec->i_action) {
>       case NCS_MBCSV_ACT_ADD:
>       case NCS_MBCSV_ACT_UPDATE:
> -             status = m_NCS_EDU_VER_EXEC(&cb->edu_hdl, 
> avsv_edp_ckpt_msg_siass,
> -                     &dec->i_uba, EDP_OP_TYPE_DEC, (AVSV_SU_SI_REL_CKPT_MSG 
> **)&su_si_ckpt,
> -                     &ederror, dec->i_peer_version);
> +             decode_siass(&dec->i_uba, &su_si_ckpt, dec->i_peer_version);
>               break;
>   
>       case NCS_MBCSV_ACT_RMV:
> -             status = m_NCS_EDU_VER_EXEC(&cb->edu_hdl, 
> avsv_edp_ckpt_msg_siass,
> -                             &dec->i_uba, EDP_OP_TYPE_DEC, 
> (AVSV_SU_SI_REL_CKPT_MSG **)&su_si_ckpt,
> -                             &ederror, dec->i_peer_version);
> +             decode_siass(&dec->i_uba, &su_si_ckpt, dec->i_peer_version);
>               break;
>   
>       default:
>               osafassert(0);
>       }
>   
> -     if (status != NCSCC_RC_SUCCESS) {
> -             LOG_ER("%s: decode failed, ederror=%u", __FUNCTION__, ederror);
> -             return status;
> -     }
> -
> -     avd_ckpt_siass(cb, su_si_ckpt, dec);
> -
> -     /* If update is successful, update async update count */
> -     if (NCSCC_RC_SUCCESS == status)
> -             cb->async_updt_cnt.siass_updt++;
> -
> -     TRACE_LEAVE2("status '%u'", status);
> -     return status;
> +     avd_ckpt_siass(cb, &su_si_ckpt, dec);
> +
> +     cb->async_updt_cnt.siass_updt++;
> +
> +     TRACE_LEAVE();
> +     return NCSCC_RC_SUCCESS;
>   }
>   
>   
> /****************************************************************************\
> @@ -2489,14 +2491,10 @@
>   static uint32_t dec_cs_siass(AVD_CL_CB *cb, NCS_MBCSV_CB_DEC *dec, uint32_t 
> num_of_obj)
>   {
>       uint32_t status = NCSCC_RC_SUCCESS;
> -     AVSV_SU_SI_REL_CKPT_MSG *su_si_ckpt;
> -     AVSV_SU_SI_REL_CKPT_MSG dec_su_si_ckpt;
> -     EDU_ERR ederror = static_cast<EDU_ERR>(0);
> +     AVSV_SU_SI_REL_CKPT_MSG su_si_ckpt;
>       uint32_t count = 0;
>   
> -     TRACE_ENTER();
> -
> -     su_si_ckpt = &dec_su_si_ckpt;
> +     TRACE_ENTER2("i_action '%u'", dec->i_action);
>   
>       /*
>        * Walk through the entire list and send the entire list data.
> @@ -2505,14 +2503,8 @@
>        * in the same update.
>        */
>       for (count = 0; count < num_of_obj; count++) {
> -             status = m_NCS_EDU_VER_EXEC(&cb->edu_hdl, 
> avsv_edp_ckpt_msg_siass,
> -                                         &dec->i_uba, EDP_OP_TYPE_DEC, 
> (AVSV_SU_SI_REL_CKPT_MSG **)&su_si_ckpt,
> -                                         &ederror, dec->i_peer_version);
> -             if (status != NCSCC_RC_SUCCESS) {
> -                     LOG_ER("%s: decode failed, ederror=%u", __FUNCTION__, 
> ederror);
> -             }
> -
> -             status = avd_ckpt_siass(cb, su_si_ckpt, dec);
> +             decode_siass(&dec->i_uba, &su_si_ckpt, dec->i_peer_version);
> +             status = avd_ckpt_siass(cb, &su_si_ckpt, dec);
>   
>               if (status != NCSCC_RC_SUCCESS) {
>                       return NCSCC_RC_FAILURE;
> 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
> @@ -61,10 +61,6 @@
>       if (rc != NCSCC_RC_SUCCESS)
>               goto error;
>   
> -     rc = m_NCS_EDU_COMPILE_EDP(&cb->edu_hdl, avsv_edp_ckpt_msg_siass, &err);
> -     if (rc != NCSCC_RC_SUCCESS)
> -             goto error;
> -
>       rc = m_NCS_EDU_COMPILE_EDP(&cb->edu_hdl, 
> avsv_edp_ckpt_msg_async_updt_cnt, &err);
>       if (rc != NCSCC_RC_SUCCESS)
>               goto error;
> @@ -243,61 +239,6 @@
>   
>   
> /*****************************************************************************
>   
> -  PROCEDURE NAME:   avsv_edp_ckpt_msg_siass
> -
> -  DESCRIPTION:      EDU program handler for "AVD_SU_SI_REL" data. This
> -                    function is invoked by EDU for performing encode/decode
> -                    operation on "AVD_SU_SI_REL" data.
> -
> -  RETURNS:          NCSCC_RC_SUCCESS/NCSCC_RC_FAILURE
> -
> -*****************************************************************************/
> -uint32_t avsv_edp_ckpt_msg_siass(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_SU_SI_REL_CKPT_MSG *struct_ptr = nullptr, **d_ptr = nullptr;
> -     uint16_t base_ver = AVD_MBCSV_SUB_PART_VERSION_3;
> -
> -     EDU_INST_SET avsv_ckpt_msg_su_si_rel_rules[] = {
> -             {EDU_START, avsv_edp_ckpt_msg_siass, 0, 0, 0,
> -              sizeof(AVSV_SU_SI_REL_CKPT_MSG), 0, nullptr},
> -
> -             {EDU_EXEC, ncs_edp_sanamet, 0, 0, 0, 
> (long)&((AVSV_SU_SI_REL_CKPT_MSG *)0)->su_name, 0, nullptr},
> -             {EDU_EXEC, ncs_edp_sanamet, 0, 0, 0, 
> (long)&((AVSV_SU_SI_REL_CKPT_MSG *)0)->si_name, 0, nullptr},
> -             {EDU_EXEC, m_NCS_EDP_SAAMFHASTATET, 0, 0, 0, 
> (long)&((AVSV_SU_SI_REL_CKPT_MSG *)0)->state, 0, nullptr},
> -             {EDU_EXEC, ncs_edp_int, 0, 0, 0, 
> (long)&((AVSV_SU_SI_REL_CKPT_MSG *)0)->fsm, 0, nullptr},
> -             {EDU_VER_GE, nullptr,   0, 0, 4, 0, 0, 
> (EDU_EXEC_RTINE)((uint16_t *)(&(base_ver)))},
> -             {EDU_EXEC, ncs_edp_ncs_bool, 0, 0, 0, 
> (long)&((AVSV_SU_SI_REL_CKPT_MSG *)0)->csi_add_rem, 0, nullptr},
> -             {EDU_EXEC, ncs_edp_sanamet, 0, 0, 0, 
> (long)&((AVSV_SU_SI_REL_CKPT_MSG *)0)->comp_name, 0, nullptr},
> -             {EDU_EXEC, ncs_edp_sanamet, 0, 0, 0, 
> (long)&((AVSV_SU_SI_REL_CKPT_MSG *)0)->csi_name, 0, nullptr},
> -
> -             {EDU_END, 0, 0, 0, 0, 0, 0, nullptr},
> -     };
> -
> -     if (op == EDP_OP_TYPE_ENC) {
> -             struct_ptr = (AVSV_SU_SI_REL_CKPT_MSG *)ptr;
> -     } else if (op == EDP_OP_TYPE_DEC) {
> -             d_ptr = (AVSV_SU_SI_REL_CKPT_MSG **)ptr;
> -             if (*d_ptr == nullptr) {
> -                     *o_err = EDU_ERR_MEM_FAIL;
> -                     return NCSCC_RC_FAILURE;
> -             }
> -             memset(*d_ptr, '\0', sizeof(AVSV_SU_SI_REL_CKPT_MSG));
> -             struct_ptr = *d_ptr;
> -     } else {
> -             struct_ptr = static_cast<AVSV_SU_SI_REL_CKPT_MSG*>(ptr);
> -     }
> -
> -     rc = m_NCS_EDU_RUN_RULES(hdl, edu_tkn, avsv_ckpt_msg_su_si_rel_rules, 
> struct_ptr,
> -                              ptr_data_len, buf_env, op, o_err);
> -
> -     return rc;
> -}
> -
> -/*****************************************************************************
> -
>     PROCEDURE NAME:   avsv_edp_ckpt_msg_async_updt_cnt
>   
>     DESCRIPTION:      EDU program handler for "AVSV_ASYNC_UPDT_CNT" data. This
> 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
> @@ -638,6 +638,22 @@
>       return status;
>   }
>   
> +void encode_siass(NCS_UBAID *ub,
> +     const AVD_SU_SI_REL *susi,
> +     const uint16_t peer_version)
> +{
> +     osaf_encode_sanamet(ub, &susi->su->name);
> +     osaf_encode_sanamet(ub, &susi->si->name);
> +     osaf_encode_uint32(ub, susi->state);
> +     osaf_encode_uint32(ub, susi->fsm);
> +     if (peer_version >= AVD_MBCSV_SUB_PART_VERSION_3) {
> +             osaf_encode_bool(ub, static_cast<bool>(susi->csi_add_rem));
> +             osaf_encode_sanamet(ub, &susi->comp_name);
> +             osaf_encode_sanamet(ub, &susi->csi_name);
> +     };
> +}
> +
> +
>   
> /****************************************************************************\
>    * Function: enc_siass
>    *
> @@ -654,52 +670,31 @@
>   \**************************************************************************/
>   static uint32_t enc_siass(AVD_CL_CB *cb, NCS_MBCSV_CB_ENC *enc)
>   {
> -     uint32_t status = NCSCC_RC_SUCCESS;
> -     AVSV_SU_SI_REL_CKPT_MSG su_si_ckpt;
> -     EDU_ERR ederror = static_cast<EDU_ERR>(0);
>       TRACE_ENTER2("io_action '%u'", enc->io_action);
>   
> -     memset(&su_si_ckpt, 0, sizeof(su_si_ckpt));
>       /*
>        * Check for the action type (whether it is add, rmv or update) and act
>        * accordingly. If it is update or add, encode entire data. If it is rmv
>        * send key information only. In this case key is SU and SI key.
>        */
> -     su_si_ckpt.su_name = ((AVD_SU_SI_REL 
> *)(NCS_INT64_TO_PTR_CAST(enc->io_reo_hdl)))->su->name;
> -     su_si_ckpt.si_name = ((AVD_SU_SI_REL 
> *)(NCS_INT64_TO_PTR_CAST(enc->io_reo_hdl)))->si->name;
> +     const AVD_SU_SI_REL *susi = (AVD_SU_SI_REL 
> *)(NCS_INT64_TO_PTR_CAST(enc->io_reo_hdl));
>   
>       switch (enc->io_action) {
>       case NCS_MBCSV_ACT_ADD:
>       case NCS_MBCSV_ACT_UPDATE:
> -             su_si_ckpt.fsm = ((AVD_SU_SI_REL 
> *)(NCS_INT64_TO_PTR_CAST(enc->io_reo_hdl)))->fsm;
> -             su_si_ckpt.state = ((AVD_SU_SI_REL 
> *)(NCS_INT64_TO_PTR_CAST(enc->io_reo_hdl)))->state;
> -             su_si_ckpt.csi_add_rem = ((AVD_SU_SI_REL 
> *)(NCS_INT64_TO_PTR_CAST(enc->io_reo_hdl)))->csi_add_rem;
> -             su_si_ckpt.comp_name = ((AVD_SU_SI_REL 
> *)(NCS_INT64_TO_PTR_CAST(enc->io_reo_hdl)))->comp_name;
> -             su_si_ckpt.csi_name = ((AVD_SU_SI_REL 
> *)(NCS_INT64_TO_PTR_CAST(enc->io_reo_hdl)))->csi_name;
> -
> -             status = m_NCS_EDU_VER_EXEC(&cb->edu_hdl, 
> avsv_edp_ckpt_msg_siass,
> -                     &enc->io_uba, EDP_OP_TYPE_ENC, &su_si_ckpt, &ederror, 
> enc->i_peer_version);
> +             encode_siass(&enc->io_uba, susi, enc->i_peer_version);
>               break;
>   
>       case NCS_MBCSV_ACT_RMV:
> -             su_si_ckpt.csi_add_rem = ((AVD_SU_SI_REL 
> *)(NCS_INT64_TO_PTR_CAST(enc->io_reo_hdl)))->csi_add_rem;
> -             su_si_ckpt.comp_name = ((AVD_SU_SI_REL 
> *)(NCS_INT64_TO_PTR_CAST(enc->io_reo_hdl)))->comp_name;
> -             su_si_ckpt.csi_name = ((AVD_SU_SI_REL 
> *)(NCS_INT64_TO_PTR_CAST(enc->io_reo_hdl)))->csi_name;
> -
> -             status = m_NCS_EDU_VER_EXEC(&cb->edu_hdl, 
> avsv_edp_ckpt_msg_siass,
> -                             &enc->io_uba, EDP_OP_TYPE_ENC, &su_si_ckpt, 
> &ederror, enc->i_peer_version);
> +             encode_siass(&enc->io_uba, susi, enc->i_peer_version);
>               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;
>   }
>   
>   
> @@ -2263,11 +2258,9 @@
>    
> \**************************************************************************/
>   static uint32_t enc_cs_siass(AVD_CL_CB *cb, NCS_MBCSV_CB_ENC *enc, uint32_t 
> *num_of_obj)
>   {
> -     uint32_t status = NCSCC_RC_SUCCESS;
> -     AVD_SU *su;
> -     AVSV_SU_SI_REL_CKPT_MSG su_si_ckpt;
> -     AVD_SU_SI_REL *rel;
> -     EDU_ERR ederror = static_cast<EDU_ERR>(0);
> +     const AVD_SU *su;
> +     const AVD_SU_SI_REL *rel;
> +     AVD_SU_SI_REL copy;
>       TRACE_ENTER();
>   
>       /*
> @@ -2276,31 +2269,19 @@
>        * are sent.We will send the corresponding COMP_CSI relationship for 
> that SU_SI
>        * in the same update.
>        */
> -     memset(&su_si_ckpt, 0, sizeof(su_si_ckpt));
>       for (std::map<std::string, AVD_SU*>::const_iterator it = su_db->begin();
>                       it != su_db->end(); it++) {
>               su = it->second;
> -             su_si_ckpt.su_name = su->name;
>   
>               for (rel = su->list_of_susi; rel != nullptr; rel = 
> rel->su_next) {
> -                     su_si_ckpt.si_name = rel->si->name;
> -                     su_si_ckpt.fsm = rel->fsm;
> -                     su_si_ckpt.state = rel->state;
> -
> -                     status = m_NCS_EDU_VER_EXEC(&cb->edu_hdl, 
> avsv_edp_ckpt_msg_siass,
> -                                                 &enc->io_uba, 
> EDP_OP_TYPE_ENC, &su_si_ckpt, &ederror,
> -                                                 enc->i_peer_version);
> -
> -                     if (status != NCSCC_RC_SUCCESS) {
> -                             LOG_ER("%s: encode failed, ederror=%u", 
> __FUNCTION__, ederror);
> -                             return status;
> -                     }
> -
> +                     memcpy(&copy, rel, sizeof(AVD_SU_SI_REL));
> +                     copy.csi_add_rem = static_cast<SaBoolT>(false);
> +                     encode_siass(&enc->io_uba, &copy, enc->i_peer_version);
>                       (*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
> @@ -158,4 +158,7 @@
>   void encode_comp(NCS_UBAID *ub, const AVD_COMP *comp);
>   void decode_comp(NCS_UBAID *ub, AVD_COMP *comp);
>   
> +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);
> +
>   #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
> @@ -18,6 +18,7 @@
>   #include "mbcsv_papi.h"
>   #include "cb.h"
>   #include "app.h"
> +#include "susi.h"
>   #include "gtest/gtest.h"
>   #include "ncssysf_mem.h"
>   
> @@ -166,3 +167,45 @@
>     ASSERT_EQ(comp.saAmfCompRestartCount, static_cast<uint32_t>(0x77665544));
>     ASSERT_EQ(Amf::to_string(&comp.saAmfCompCurrProxyName), "CompProxyName");
>   }
> +
> +TEST_F(CkptEncDecTest, testEncDecAvdSiAss) {
> +  int rc = 0;
> +  AVD_SU_SI_REL susi;
> +  AVSV_SU_SI_REL_CKPT_MSG susi_ckpt;
> +  AVD_SU su;
> +  AVD_SI si;
> +  std::string su_name("su_name");
> +  std::string si_name("si_name");
> +  std::string comp_name("comp_name");
> +  std::string csi_name("csi_name");
> +
> +  rc = ncs_enc_init_space(&enc.io_uba);
> +  ASSERT_TRUE(rc == NCSCC_RC_SUCCESS);
> +
> +  su.name = *(asSaNameT(su_name));
> +  si.name = *(asSaNameT(si_name));
> +  susi.su = &su;
> +  susi.si = &si;
> +  susi.state = SA_AMF_HA_ACTIVE;
> +  susi.fsm = AVD_SU_SI_STATE_ABSENT;
> +  susi.csi_add_rem = static_cast<SaBoolT>(0);
> +  susi.comp_name = *(asSaNameT(comp_name));
> +  susi.csi_name = *(asSaNameT(csi_name));
> +
> +  enc.io_msg_type = NCS_MBCSV_MSG_ASYNC_UPDATE;
> +  enc.io_action = NCS_MBCSV_ACT_UPDATE;
> +  enc.io_reo_hdl = (MBCSV_REO_HDL)&susi;
> +  enc.io_reo_type = AVSV_CKPT_AVD_SI_ASS;
> +  enc.i_peer_version = AVD_MBCSV_SUB_PART_VERSION_4;
> +
> +  encode_siass(&enc.io_uba, &susi, enc.i_peer_version);
> +  decode_siass(&enc.io_uba, &susi_ckpt, enc.i_peer_version);
> +
> +  ASSERT_EQ(Amf::to_string(&susi_ckpt.su_name), "su_name");
> +  ASSERT_EQ(Amf::to_string(&susi_ckpt.si_name), "si_name");
> +  ASSERT_EQ(susi_ckpt.state, SA_AMF_HA_ACTIVE);
> +  ASSERT_EQ(susi_ckpt.fsm, AVD_SU_SI_STATE_ABSENT);
> +  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


------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to