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;
+ 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");
+}
------------------------------------------------------------------------------
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=254741911&iu=/4140
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel