ack, only code review/Regards HansN On 05/21/14 13:19, [email protected] wrote: > osaf/services/saf/amf/amfd/ckpt_enc.cc | 7 +++---- > osaf/services/saf/amf/amfd/imm.cc | 9 +++------ > osaf/services/saf/amf/amfd/include/si.h | 2 +- > osaf/services/saf/amf/amfd/si.cc | 32 > ++++++++------------------------ > osaf/services/saf/amf/amfd/util.cc | 6 +++--- > 5 files changed, 18 insertions(+), 38 deletions(-) > > > 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 > @@ -2370,7 +2370,6 @@ static uint32_t enc_cs_su_config(AVD_CL_ > static uint32_t enc_cs_si_config(AVD_CL_CB *cb, NCS_MBCSV_CB_ENC *enc, > uint32_t *num_of_obj) > { > uint32_t status = NCSCC_RC_SUCCESS; > - AVD_SI *si; > SaNameT si_name; > EDU_ERR ederror = static_cast<EDU_ERR>(0); > TRACE_ENTER(); > @@ -2378,9 +2377,9 @@ static uint32_t enc_cs_si_config(AVD_CL_ > /* > * Walk through the entire list and send the entire list data. > */ > - si_name.length = 0; > - for (si = avd_si_getnext(&si_name); si != NULL; > - si = avd_si_getnext(&si_name)) { > + for (std::map<std::string, AVD_SI*>::const_iterator it = si_db->begin(); > + it != si_db->end(); it++) { > + AVD_SI *si = it->second; > status = m_NCS_EDU_VER_EXEC(&cb->edu_hdl, avsv_edp_ckpt_msg_si, > &enc->io_uba, > EDP_OP_TYPE_ENC, si, &ederror, > enc->i_peer_version); > > diff --git a/osaf/services/saf/amf/amfd/imm.cc > b/osaf/services/saf/amf/amfd/imm.cc > --- a/osaf/services/saf/amf/amfd/imm.cc > +++ b/osaf/services/saf/amf/amfd/imm.cc > @@ -1579,8 +1579,6 @@ void avd_imm_update_runtime_attrs(void) > AVD_COMP *comp; > SaNameT node_name = {0}; > AVD_AVND *node; > - SaNameT si_name = {0}; > - AVD_SI *si; > > /* Update SU Class runtime cached attributes. */ > for (std::map<std::string, AVD_SU*>::const_iterator it = su_db->begin(); > @@ -1631,12 +1629,11 @@ void avd_imm_update_runtime_attrs(void) > } > > /* Update Node Class runtime cached attributes. */ > - si = avd_si_getnext(&si_name); > - while (si != NULL) { > + for (std::map<std::string, AVD_SI*>::const_iterator it = si_db->begin(); > + it != si_db->end(); it++) { > + AVD_SI *si = it->second; > avd_saImmOiRtObjectUpdate(&si->name, "saAmfSIAssignmentState", > SA_IMM_ATTR_SAUINT32T, &si->saAmfSIAssignmentState); > - > - si = avd_si_getnext(&si->name); > } > } > > diff --git a/osaf/services/saf/amf/amfd/include/si.h > b/osaf/services/saf/amf/amfd/include/si.h > --- a/osaf/services/saf/amf/amfd/include/si.h > +++ b/osaf/services/saf/amf/amfd/include/si.h > @@ -132,6 +132,7 @@ typedef struct { > > } AVD_SVC_TYPE_CS_TYPE; > > +extern AmfDb<AVD_SI> *si_db; > #define AVD_SI_NULL ((AVD_SI *)0) > #define m_AVD_SI_ACTV_MAX_SU(l_si) (l_si)->saAmfSIPrefActiveAssignments > #define m_AVD_SI_ACTV_CURR_SU(l_si) (l_si)->saAmfSINumCurrActiveAssignments > @@ -150,7 +151,6 @@ extern AVD_SI *avd_si_new(const SaNameT > extern void avd_si_delete(AVD_SI *si); > extern void avd_si_db_add(AVD_SI *si); > extern AVD_SI *avd_si_get(const SaNameT *si_name); > -extern AVD_SI *avd_si_getnext(const SaNameT *si_name); > extern SaAisErrorT avd_si_config_get(struct avd_app_tag *app); > extern void avd_si_constructor(void); > > diff --git a/osaf/services/saf/amf/amfd/si.cc > b/osaf/services/saf/amf/amfd/si.cc > --- a/osaf/services/saf/amf/amfd/si.cc > +++ b/osaf/services/saf/amf/amfd/si.cc > @@ -27,7 +27,8 @@ > #include <proc.h> > #include <si_dep.h> > > -static NCS_PATRICIA_TREE si_db; > +AmfDb<AVD_SI> *si_db = 0; > + > static void avd_si_add_csi_db(struct avd_csi_tag* csi); > static void si_update_ass_state(AVD_SI *si); > > @@ -365,8 +366,6 @@ static void si_delete_csis(AVD_SI *si) > > void avd_si_delete(AVD_SI *si) > { > - unsigned int rc; > - > TRACE_ENTER2("%s", si->name.value); > > /* All CSI under this should have been deleted by now on the active > @@ -385,8 +384,7 @@ void avd_si_delete(AVD_SI *si) > SA_NTF_SOFTWARE_ERROR); > } > > - rc = ncs_patricia_tree_del(&si_db, &si->tree_node); > - osafassert(rc == NCSCC_RC_SUCCESS); > + si_db->erase(si); > > if (si->saAmfSIActiveWeight != NULL) { > unsigned int i = 0; > @@ -434,8 +432,8 @@ void avd_si_db_add(AVD_SI *si) > { > unsigned int rc; > > - if (avd_si_get(&si->name) == NULL) { > - rc = ncs_patricia_tree_add(&si_db, &si->tree_node); > + if (si_db->find(&si->name) == NULL) { > + rc = si_db->insert(si); > osafassert(rc == NCSCC_RC_SUCCESS); > } > } > @@ -450,21 +448,10 @@ AVD_SI *avd_si_get(const SaNameT *dn) > tmp.length = dn->length; > memcpy(tmp.value, dn->value, tmp.length); > > - return (AVD_SI *)ncs_patricia_tree_get(&si_db, (uint8_t *)&tmp); > + return si_db->find(dn); > } > > -AVD_SI *avd_si_getnext(const SaNameT *dn) > -{ > - SaNameT tmp = {0}; > > - if (dn->length > SA_MAX_NAME_LENGTH) > - return NULL; > - > - tmp.length = dn->length; > - memcpy(tmp.value, dn->value, tmp.length); > - > - return (AVD_SI *)ncs_patricia_tree_getnext(&si_db, (uint8_t *)&tmp); > -} > > static void si_add_to_model(AVD_SI *si) > { > @@ -581,7 +568,7 @@ static AVD_SI *si_create(SaNameT *si_nam > ** If called at new active at failover, the object is found in the DB > ** but needs to get configuration attributes initialized. > */ > - if (NULL == (si = avd_si_get(si_name))) { > + if (NULL == (si = si_db->find(si_name))) { > if ((si = avd_si_new(si_name)) == NULL) > goto done; > } else { > @@ -1386,10 +1373,7 @@ void avd_si_inc_curr_stdby_dec_act_ass(A > > void avd_si_constructor(void) > { > - NCS_PATRICIA_PARAMS patricia_params; > - > - patricia_params.key_size = sizeof(SaNameT); > - osafassert(ncs_patricia_tree_init(&si_db, &patricia_params) == > NCSCC_RC_SUCCESS); > + si_db = new AmfDb<AVD_SI>; > avd_class_impl_set("SaAmfSI", si_rt_attr_cb, si_admin_op_cb, > si_ccb_completed_cb, si_ccb_apply_cb); > } > diff --git a/osaf/services/saf/amf/amfd/util.cc > b/osaf/services/saf/amf/amfd/util.cc > --- a/osaf/services/saf/amf/amfd/util.cc > +++ b/osaf/services/saf/amf/amfd/util.cc > @@ -1412,9 +1412,9 @@ void amfd_file_dump(const char *path) > dn = comp->comp_info.name; > } > > - AVD_SI *si; > - dn.length = 0; > - for (si = avd_si_getnext(&dn); si != NULL; si = avd_si_getnext(&dn)) { > + for (std::map<std::string, AVD_SI*>::const_iterator it = si_db->begin(); > + it != si_db->end(); it++) { > + const AVD_SI *si = it->second; > fprintf(f, "%s\n", si->name.value); > fprintf(f, "\tsaAmfSIAdminState=%u\n", si->saAmfSIAdminState); > fprintf(f, "\tsaAmfSIAssignmentStatee=%u\n", > si->saAmfSIAssignmentState);
------------------------------------------------------------------------------ "Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE Instantly run your Selenium tests across 300+ browser/OS combos. Get unparalleled scalability from the best Selenium testing platform available Simple to use. Nothing to install. Get started now for free." http://p.sf.net/sfu/SauceLabs _______________________________________________ Opensaf-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/opensaf-devel
