ack, code review only/Thanks HansN
On 11/25/2015 07:32 AM, Gary Lee wrote:
> osaf/services/saf/amf/amfd/ckpt_dec.cc | 51 ++++++---------
> osaf/services/saf/amf/amfd/ckpt_edu.cc | 54
> -----------------
> osaf/services/saf/amf/amfd/ckpt_enc.cc | 38 +++++------
> osaf/services/saf/amf/amfd/include/ckpt.h | 2 +
> osaf/services/saf/amf/amfd/include/ckpt_edu.h | 3 -
> osaf/services/saf/amf/amfd/tests/test_ckpt_enc_dec.cc | 60
> +++++++++++++++++++
> 6 files changed, 98 insertions(+), 110 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
> @@ -195,6 +195,16 @@
> dec_cs_async_updt_cnt
> };
>
> +void decode_cb(NCS_UBAID *ub,
> + AVD_CL_CB *cb,
> + const uint16_t peer_version)
> +{
> + osaf_decode_uint32(ub, reinterpret_cast<uint32_t*>(&cb->init_state));
> + osaf_decode_satimet(ub, &cb->cluster_init_time);
> + osaf_decode_uint32(ub, &cb->nodes_exit_cnt);
> +}
> +
> +
>
> /****************************************************************************\
> * Function: dec_cb_config
> *
> @@ -209,32 +219,18 @@
> *
> *
> \**************************************************************************/
> -static uint32_t dec_cb_config(AVD_CL_CB *cb_ptr, NCS_MBCSV_CB_DEC *dec)
> +static uint32_t dec_cb_config(AVD_CL_CB *cb, NCS_MBCSV_CB_DEC *dec)
> {
> - uint32_t status = NCSCC_RC_SUCCESS;
> - EDU_ERR ederror = static_cast<EDU_ERR>(0);
> - AVD_CL_CB *cb;
> -
> - cb = cb_ptr;
> -
> TRACE_ENTER();
> - /*
> - * For updating CB, action is always to do update. We don't have add
> and remove
> - * action on CB. So call EDU to decode CB data.
> - */
> - status = m_NCS_EDU_VER_EXEC(&cb->edu_hdl, avsv_edp_ckpt_msg_cb,
> &dec->i_uba,
> - EDP_OP_TYPE_DEC, (AVD_CL_CB **)&cb,
> &ederror, dec->i_peer_version);
> -
> - if (status != NCSCC_RC_SUCCESS) {
> - LOG_ER("%s: decode failed, ederror=%u", __FUNCTION__, ederror);
> - return status;
> - }
> +
> + osafassert(dec->i_action == NCS_MBCSV_ACT_UPDATE);
> + decode_cb(&dec->i_uba, cb, dec->i_peer_version);
>
> /* Since update is successful, update async update count */
> cb->async_updt_cnt.cb_updt++;
>
> - TRACE_LEAVE2("status '%u'", status);
> - return status;
> + TRACE_LEAVE();
> + return NCSCC_RC_SUCCESS;
> }
>
>
> /****************************************************************************\
> @@ -2122,22 +2118,15 @@
> \**************************************************************************/
> static uint32_t dec_cs_cb_config(AVD_CL_CB *cb, NCS_MBCSV_CB_DEC *dec,
> uint32_t num_of_obj)
> {
> - uint32_t status = NCSCC_RC_SUCCESS;
> - EDU_ERR ederror = static_cast<EDU_ERR>(0);
> - AVD_CL_CB *cb_ptr;
> -
> TRACE_ENTER();
>
> - cb_ptr = cb;
> /*
> * Send the CB data.
> */
> - status = m_NCS_EDU_VER_EXEC(&cb->edu_hdl, avsv_edp_ckpt_msg_cb,
> &dec->i_uba,
> - EDP_OP_TYPE_DEC, (AVD_CL_CB **)&cb_ptr,
> &ederror, dec->i_peer_version);
> - osafassert(status == NCSCC_RC_SUCCESS);
> -
> - TRACE_LEAVE2("status '%u'", status);
> - return status;
> + decode_cb(&dec->i_uba, cb, dec->i_peer_version);
> +
> + 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
> @@ -53,10 +53,6 @@
>
> m_NCS_EDU_HDL_INIT(&cb->edu_hdl);
>
> - rc = m_NCS_EDU_COMPILE_EDP(&cb->edu_hdl, avsv_edp_ckpt_msg_cb, &err);
> - if (rc != NCSCC_RC_SUCCESS)
> - goto error;
> -
> rc = m_NCS_EDU_COMPILE_EDP(&cb->edu_hdl, avsv_edp_ckpt_msg_node, &err);
> if (rc != NCSCC_RC_SUCCESS)
> goto error;
> @@ -92,56 +88,6 @@
>
>
> /*****************************************************************************
>
> - PROCEDURE NAME: avsv_edp_ckpt_msg_cb
> -
> - DESCRIPTION: EDU program handler for "AVD_CL_CB" data. This
> - function is invoked by EDU for performing encode/decode
> - operation on "AVD_CL_CB" data.
> -
> - RETURNS: NCSCC_RC_SUCCESS/NCSCC_RC_FAILURE
> -
> -*****************************************************************************/
> -uint32_t avsv_edp_ckpt_msg_cb(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;
> - AVD_CL_CB *struct_ptr = nullptr, **d_ptr = nullptr;
> -
> - EDU_INST_SET avsv_ckpt_msg_cb_rules[] = {
> - {EDU_START, avsv_edp_ckpt_msg_cb, 0, 0, 0, sizeof(AVD_CL_CB),
> 0, nullptr},
> -
> - /* AVD Control block information */
> - {EDU_EXEC, ncs_edp_int, 0, 0, 0,
> - (long)&((AVD_CL_CB *)0)->init_state, 0, nullptr},
> - {EDU_EXEC, m_NCS_EDP_SATIMET, 0, 0, 0,
> - (long)&((AVD_CL_CB *)0)->cluster_init_time, 0, nullptr},
> - {EDU_EXEC, ncs_edp_uns32, 0, 0, 0,
> - (long)&((AVD_CL_CB *)0)->nodes_exit_cnt, 0, nullptr},
> -
> - {EDU_END, 0, 0, 0, 0, 0, 0, nullptr},
> - };
> -
> - if (op == EDP_OP_TYPE_ENC) {
> - struct_ptr = (AVD_CL_CB *)ptr;
> - } else if (op == EDP_OP_TYPE_DEC) {
> - d_ptr = (AVD_CL_CB **)ptr;
> - if (*d_ptr == nullptr) {
> - *o_err = EDU_ERR_MEM_FAIL;
> - return NCSCC_RC_FAILURE;
> - }
> - /*memset(*d_ptr, '\0', sizeof(AVD_CL_CB)); */
> - struct_ptr = *d_ptr;
> - } else {
> - struct_ptr = static_cast<AVD_CL_CB*>(ptr);
> - }
> -
> - rc = m_NCS_EDU_RUN_RULES(hdl, edu_tkn, avsv_ckpt_msg_cb_rules,
> struct_ptr, ptr_data_len, buf_env, op, o_err);
> -
> - return rc;
> -}
> -
> -/*****************************************************************************
> -
> PROCEDURE NAME: avsv_edp_ckpt_msg_cluster
>
> DESCRIPTION: EDU program handler for "AVD_CLUSTER" 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
> @@ -196,6 +196,15 @@
> enc_cs_async_updt_cnt
> };
>
> +void encode_cb(NCS_UBAID *ub,
> + const AVD_CL_CB *cb,
> + const uint16_t peer_version)
> +{
> + osaf_encode_uint32(ub, cb->init_state);
> + osaf_encode_satimet(ub, cb->cluster_init_time);
> + osaf_encode_uint32(ub, cb->nodes_exit_cnt);
> +}
> +
>
> /****************************************************************************\
> * Function: enc_cb_config
> *
> @@ -212,23 +221,17 @@
> \**************************************************************************/
> static uint32_t enc_cb_config(AVD_CL_CB *cb, NCS_MBCSV_CB_ENC *enc)
> {
> - uint32_t status = NCSCC_RC_SUCCESS;
> - EDU_ERR ederror = static_cast<EDU_ERR>(0);
> TRACE_ENTER();
>
> /*
> * For updating CB, action is always to do update. We don't have add
> and remove
> * action on CB. So call EDU to encode CB data.
> */
> - status = m_NCS_EDU_VER_EXEC(&cb->edu_hdl, avsv_edp_ckpt_msg_cb,
> &enc->io_uba,
> - EDP_OP_TYPE_ENC, cb, &ederror,
> enc->i_peer_version);
> + osafassert(enc->io_action == NCS_MBCSV_ACT_UPDATE);
> + encode_cb(&enc->io_uba, cb, enc->i_peer_version);
>
> - if (status != NCSCC_RC_SUCCESS) {
> - LOG_ER("%s: encode failed, ederror=%u", __FUNCTION__, ederror);
> - return status;
> - }
> - TRACE_LEAVE2("status '%u'", status);
> - return status;
> + TRACE_LEAVE();
> + return NCSCC_RC_SUCCESS;
> }
>
>
> /****************************************************************************\
> @@ -1890,25 +1893,16 @@
> \**************************************************************************/
> static uint32_t enc_cs_cb_config(AVD_CL_CB *cb, NCS_MBCSV_CB_ENC *enc,
> uint32_t *num_of_obj)
> {
> - uint32_t status = NCSCC_RC_SUCCESS;
> - EDU_ERR ederror = static_cast<EDU_ERR>(0);
> TRACE_ENTER();
>
> /*
> * Send the CB data.
> */
> - status = m_NCS_EDU_VER_EXEC(&cb->edu_hdl, avsv_edp_ckpt_msg_cb,
> &enc->io_uba,
> - EDP_OP_TYPE_ENC, cb, &ederror,
> enc->i_peer_version);
> -
> - if (status != NCSCC_RC_SUCCESS) {
> - LOG_ER("%s: encode failed, ederror=%u", __FUNCTION__, ederror);
> - return NCSCC_RC_FAILURE;
> - }
> -
> + encode_cb(&enc->io_uba, cb, enc->i_peer_version);
> *num_of_obj = 1;
>
> - 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
> @@ -157,5 +157,7 @@
> void decode_app(NCS_UBAID *ub, AVD_APP *app);
> void encode_comp(NCS_UBAID *ub, const AVD_COMP *comp);
> void decode_comp(NCS_UBAID *ub, AVD_COMP *comp);
> +void encode_cb(NCS_UBAID *ub, const struct cl_cb_tag *cb, const uint16_t
> peer_version);
> +void decode_cb(NCS_UBAID *ub, struct cl_cb_tag *cb, 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
> @@ -35,9 +35,6 @@
>
> /* Function Definations of avd_ckpt_edu.c */
> uint32_t avd_compile_ckpt_edp(AVD_CL_CB *cb);
> -uint32_t avsv_edp_ckpt_msg_cb(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 avsv_edp_ckpt_msg_cluster(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);
> 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
> @@ -166,3 +166,63 @@
> ASSERT_EQ(comp.saAmfCompRestartCount, static_cast<uint32_t>(0x77665544));
> ASSERT_EQ(Amf::to_string(&comp.saAmfCompCurrProxyName), "CompProxyName");
> }
> +
> +
> +TEST_F(CkptEncDecTest, testEncDecAvdCb) {
> + int rc = 0;
> + AVD_CL_CB cb;
> +
> + cb.init_state = AVD_APP_STATE;
> + cb.cluster_init_time = 0x8877665544332211;
> + cb.nodes_exit_cnt = 0x55443322;
> +
> + 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)&cb;
> + enc.io_reo_type = AVSV_CKPT_AVD_CB_CONFIG;
> + enc.i_peer_version = AVD_MBCSV_SUB_PART_VERSION_3;
> +
> + encode_cb(&enc.io_uba, &cb, enc.i_peer_version);
> +
> + // retrieve AVD_CL_CB encoded data from the USR buf
> + int32_t size = enc.io_uba.ttl;
> + char *tmpData = new char[size];
> +
> + char *buf = sysf_data_at_start(enc.io_uba.ub, size, tmpData);
> + uint32_t offset = 0;
> + uint32_t *fld = reinterpret_cast<uint32_t*>(&buf[offset]);
> +
> + // verify that the encoded value is in network byte order
> + if (isLittleEndian()) {
> + // app_state
> + ASSERT_EQ(*fld++, static_cast<uint32_t>(0x04000000));
> + // cluster_init_time
> + ASSERT_EQ(*fld++, static_cast<uint32_t>(0x55667788));
> + ASSERT_EQ(*fld++, static_cast<uint32_t>(0x11223344));
> + // nodes_exit_cnt
> + ASSERT_EQ(*fld, static_cast<uint32_t>(0x22334455));
> + } else {
> + // app_state
> + ASSERT_EQ(*fld++, static_cast<uint32_t>(0x00000004));
> + // cluster_init_time
> + ASSERT_EQ(*fld++, static_cast<uint32_t>(0x88776655));
> + ASSERT_EQ(*fld++, static_cast<uint32_t>(0x44332211));
> + // nodes_exit_cnt
> + ASSERT_EQ(*fld, static_cast<uint32_t>(0x55443322));
> + }
> +
> + delete [] tmpData;
> +
> + cb.init_state = AVD_INIT_BGN;
> + cb.cluster_init_time = 0x0;
> + cb.nodes_exit_cnt = 0x0;
> +
> + decode_cb(&enc.io_uba, &cb, enc.i_peer_version);
> +
> + ASSERT_EQ(cb.init_state, AVD_APP_STATE);
> + ASSERT_EQ(cb.cluster_init_time, static_cast<SaTimeT>(0x8877665544332211));
> + ASSERT_EQ(cb.nodes_exit_cnt, static_cast<uint32_t>(0x55443322));
> +}
------------------------------------------------------------------------------
Go from Idea to Many App Stores Faster with Intel(R) XDK
Give your users amazing mobile app experiences with Intel(R) XDK.
Use one codebase in this all-in-one HTML5 development environment.
Design, debug & build mobile apps & 2D/3D high-impact games for multiple OSs.
http://pubads.g.doubleclick.net/gampad/clk?id=254741551&iu=/4140
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel