osaf/services/saf/amf/amfd/include/si.h | 4 +-- osaf/services/saf/amf/amfd/si.cc | 3 -- osaf/services/saf/amf/amfd/svctypecstypes.cc | 40 +++++++-------------------- 3 files changed, 12 insertions(+), 35 deletions(-)
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 @@ -69,7 +69,6 @@ typedef struct avd_sirankedsu { */ typedef struct avd_si_tag { - NCS_PATRICIA_NODE tree_node; /* key will be the SI name */ SaNameT name; /******************** B.04 model *************************************************/ @@ -121,7 +120,6 @@ typedef struct avd_amf_svc_type_tag { } AVD_SVC_TYPE; typedef struct { - NCS_PATRICIA_NODE tree_node; /* key is name */ SaNameT name; SaUint32T saAmfSvctMaxNumCSIs; @@ -133,6 +131,7 @@ typedef struct { } AVD_SVC_TYPE_CS_TYPE; extern AmfDb<std::string, AVD_SI> *si_db; +extern AmfDb<std::string, AVD_SVC_TYPE_CS_TYPE> *svctypecstypes_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 @@ -161,7 +160,6 @@ extern void avd_svctype_remove_si(AVD_SI extern void avd_svctype_constructor(void); extern SaAisErrorT avd_svctypecstypes_config_get(SaNameT *svctype_name); -extern AVD_SVC_TYPE_CS_TYPE *avd_svctypecstypes_get(const SaNameT *svctypecstypes_name); extern void avd_svctypecstypes_constructor(void); extern void avd_si_inc_curr_act_ass(AVD_SI *si); extern void avd_si_dec_curr_act_ass(AVD_SI *si); 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 @@ -331,7 +331,6 @@ AVD_SI *avd_si_new(const SaNameT *dn) memcpy(si->name.value, dn->value, dn->length); si->name.length = dn->length; - si->tree_node.key_info = (uint8_t *)&si->name; si->si_switch = AVSV_SI_TOGGLE_STABLE; si->saAmfSIAdminState = SA_AMF_ADMIN_UNLOCKED; si->si_dep_state = AVD_SI_NO_DEPENDENCY; @@ -433,8 +432,6 @@ void avd_si_db_add(AVD_SI *si) unsigned int rc; if (si_db->find(Amf::to_string(&si->name)) == NULL) { - rc = si_db->insert(Amf::to_string(&si->name), si); - osafassert(rc == NCSCC_RC_SUCCESS); } } diff --git a/osaf/services/saf/amf/amfd/svctypecstypes.cc b/osaf/services/saf/amf/amfd/svctypecstypes.cc --- a/osaf/services/saf/amf/amfd/svctypecstypes.cc +++ b/osaf/services/saf/amf/amfd/svctypecstypes.cc @@ -20,11 +20,11 @@ #include <si.h> #include <imm.h> -static NCS_PATRICIA_TREE svctypecstypes_db; +AmfDb<std::string, AVD_SVC_TYPE_CS_TYPE> *svctypecstypes_db = NULL; static void svctypecstype_db_add(AVD_SVC_TYPE_CS_TYPE *svctypecstype) { - unsigned int rc = ncs_patricia_tree_add(&svctypecstypes_db, &svctypecstype->tree_node); + uint32_t rc = svctypecstypes_db->insert(Amf::to_string(&svctypecstype->name),svctypecstype); osafassert(rc == NCSCC_RC_SUCCESS); } @@ -39,7 +39,6 @@ static AVD_SVC_TYPE_CS_TYPE *svctypecsty memcpy(svctypecstype->name.value, dn->value, dn->length); svctypecstype->name.length = dn->length; - svctypecstype->tree_node.key_info = (uint8_t *)&(svctypecstype->name); if (immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSvctMaxNumCSIs"), attributes, 0, &svctypecstype->saAmfSvctMaxNumCSIs) != SA_AIS_OK) svctypecstype->saAmfSvctMaxNumCSIs = -1; /* no limit */ @@ -47,25 +46,6 @@ static AVD_SVC_TYPE_CS_TYPE *svctypecsty return svctypecstype; } -static void svctypecstypes_delete(AVD_SVC_TYPE_CS_TYPE *svctypecstype) -{ - uint32_t rc; - - rc = ncs_patricia_tree_del(&svctypecstypes_db, &svctypecstype->tree_node); - osafassert(rc == NCSCC_RC_SUCCESS); - delete svctypecstype; -} - -AVD_SVC_TYPE_CS_TYPE *avd_svctypecstypes_get(const SaNameT *dn) -{ - SaNameT tmp = {0}; - - tmp.length = dn->length; - memcpy(tmp.value, dn->value, tmp.length); - - return (AVD_SVC_TYPE_CS_TYPE*)ncs_patricia_tree_get(&svctypecstypes_db, (uint8_t *)&tmp); -} - /** * Get configuration for all SaAmfSvcTypeCSTypes objects from * IMM and create AVD internal objects. @@ -100,7 +80,7 @@ SaAisErrorT avd_svctypecstypes_config_ge while (immutil_saImmOmSearchNext_2(searchHandle, &dn, (SaImmAttrValuesT_2 ***)&attributes) == SA_AIS_OK) { - if ((svctypecstype = avd_svctypecstypes_get(&dn))== NULL) { + if ((svctypecstype = svctypecstypes_db->find(Amf::to_string(&dn)))== NULL) { if ((svctypecstype = svctypecstypes_create(&dn, attributes)) == NULL) { error = SA_AIS_ERR_FAILED_OPERATION; goto done2; @@ -138,7 +118,7 @@ static SaAisErrorT svctypecstypes_ccb_co report_ccb_validation_error(opdata, "Modification of SaAmfSvcTypeCSTypes not supported"); break; case CCBUTIL_DELETE: - svctypecstype = avd_svctypecstypes_get(&opdata->objectName); + svctypecstype = svctypecstypes_db->find(Amf::to_string(&opdata->objectName)); if (svctypecstype->curr_num_csis == 0) { rc = SA_AIS_OK; opdata->userData = svctypecstype; @@ -171,7 +151,12 @@ static void svctypecstypes_ccb_apply_cb( svctypecstype_db_add(svctypecstype); break; case CCBUTIL_DELETE: - svctypecstypes_delete(static_cast<AVD_SVC_TYPE_CS_TYPE*>(opdata->userData)); + svctypecstype = svctypecstypes_db->find(Amf::to_string(&opdata->objectName)); + if (svctypecstype != NULL) { + svctypecstypes_db->erase(Amf::to_string(&opdata->objectName)); + delete svctypecstype; + } + break; default: osafassert(0); @@ -181,10 +166,7 @@ static void svctypecstypes_ccb_apply_cb( void avd_svctypecstypes_constructor(void) { - NCS_PATRICIA_PARAMS patricia_params; - - patricia_params.key_size = sizeof(SaNameT); - osafassert(ncs_patricia_tree_init(&svctypecstypes_db, &patricia_params) == NCSCC_RC_SUCCESS); + svctypecstypes_db = new AmfDb<std::string, AVD_SVC_TYPE_CS_TYPE>; avd_class_impl_set("SaAmfSvcTypeCSTypes", NULL, NULL, svctypecstypes_ccb_completed_cb, svctypecstypes_ccb_apply_cb); } ------------------------------------------------------------------------------ Learn Graph Databases - Download FREE O'Reilly Book "Graph Databases" is the definitive new guide to graph databases and their applications. Written by three acclaimed leaders in the field, this first edition is now available. Download your free book today! http://p.sf.net/sfu/NeoTech _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel