osaf/services/saf/amf/amfd/ckpt_enc.cc    |   7 +--
 osaf/services/saf/amf/amfd/ckpt_updt.cc   |   4 +-
 osaf/services/saf/amf/amfd/compcstype.cc  |  59 +++++++-----------------------
 osaf/services/saf/amf/amfd/include/comp.h |   1 +
 osaf/services/saf/amf/amfd/util.cc        |   7 +--
 5 files changed, 23 insertions(+), 55 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
@@ -2686,7 +2686,6 @@ static uint32_t enc_comp_cs_type_config(
 static uint32_t enc_cs_comp_cs_type_config(AVD_CL_CB *cb, NCS_MBCSV_CB_ENC 
*enc, uint32_t *num_of_obj)
 {
        uint32_t status = NCSCC_RC_SUCCESS;
-       AVD_COMPCS_TYPE *compcstype;
        EDU_ERR ederror = static_cast<EDU_ERR>(0);
        SaNameT dn = {0};
        TRACE_ENTER();
@@ -2694,9 +2693,9 @@ static uint32_t enc_cs_comp_cs_type_conf
        /*
         * Walk through the entire list and send the entire list data.
         */
-       dn.length = 0;
-       for (compcstype = avd_compcstype_getnext(&dn); compcstype != NULL;
-            compcstype = avd_compcstype_getnext(&dn)) {
+       for (std::map<std::string, AVD_COMPCS_TYPE*>::const_iterator it = 
compcstype_db->begin();
+                       it != compcstype_db->end(); it++) {
+               AVD_COMPCS_TYPE *compcstype = it->second;
                status = m_NCS_EDU_VER_EXEC(&cb->edu_hdl, 
avsv_edp_ckpt_msg_comp_cs_type, &enc->io_uba,
                                            EDP_OP_TYPE_ENC, compcstype, 
&ederror, enc->i_peer_version);
 
diff --git a/osaf/services/saf/amf/amfd/ckpt_updt.cc 
b/osaf/services/saf/amf/amfd/ckpt_updt.cc
--- a/osaf/services/saf/amf/amfd/ckpt_updt.cc
+++ b/osaf/services/saf/amf/amfd/ckpt_updt.cc
@@ -586,8 +586,8 @@ uint32_t avd_ckpt_compcstype(AVD_CL_CB *
 
        osafassert (action == NCS_MBCSV_ACT_UPDATE);
 
-       if (NULL == (ccst = avd_compcstype_get(dn))) {
-               LOG_ER("avd_compcstype_get FAILED for '%s'", dn->value);
+       if (NULL == (ccst = compcstype_db->find(Amf::to_string(dn)))) {
+               LOG_ER("compcstype_db->find()FAILED for '%s'", dn->value);
                goto done;
        }
        ccst->saAmfCompNumCurrActiveCSIs = 
ckpt_compcstype->saAmfCompNumCurrActiveCSIs;
diff --git a/osaf/services/saf/amf/amfd/compcstype.cc 
b/osaf/services/saf/amf/amfd/compcstype.cc
--- a/osaf/services/saf/amf/amfd/compcstype.cc
+++ b/osaf/services/saf/amf/amfd/compcstype.cc
@@ -29,7 +29,7 @@
 #include <proc.h>
 #include <ckpt_msg.h>
 
-static NCS_PATRICIA_TREE compcstype_db;
+AmfDb<std::string, AVD_COMPCS_TYPE> *compcstype_db = NULL;;
 
 //
 // TODO(HANO) Temporary use this function instead of strdup which uses malloc.
@@ -46,8 +46,8 @@ void avd_compcstype_db_add(AVD_COMPCS_TY
 {
        unsigned int rc;
 
-       if (avd_compcstype_get(&cst->name) == NULL) {
-               rc = ncs_patricia_tree_add(&compcstype_db, &cst->tree_node);
+       if (compcstype_db->find(Amf::to_string(&cst->name)) == NULL) {
+               rc = compcstype_db->insert(Amf::to_string(&cst->name),cst); 
                osafassert(rc == NCSCC_RC_SUCCESS);
        }
 }
@@ -60,21 +60,10 @@ AVD_COMPCS_TYPE *avd_compcstype_new(cons
        
        memcpy(compcstype->name.value, dn->value, dn->length);
        compcstype->name.length = dn->length;
-       compcstype->tree_node.key_info = (uint8_t *)&(compcstype->name);
 
        return compcstype;
 }
 
-void avd_compcstype_delete(AVD_COMPCS_TYPE **cst)
-{
-       unsigned int rc;
-
-       rc = ncs_patricia_tree_del(&compcstype_db, &(*cst)->tree_node);
-       osafassert(rc == NCSCC_RC_SUCCESS);
-       delete *cst;
-       *cst = NULL;
-}
-
 static void compcstype_add_to_model(AVD_COMPCS_TYPE *cst)
 {
        /* Check comp link to see if it has been added already */
@@ -110,30 +99,10 @@ AVD_COMPCS_TYPE * avd_compcstype_find_ma
        TRACE_ENTER();
        avsv_create_association_class_dn(cstype_name, &comp->comp_info.name, 
"safSupportedCsType", &dn);
        TRACE("'%s'", dn.value);
-       cst = (AVD_COMPCS_TYPE *)ncs_patricia_tree_get(&compcstype_db, (uint8_t 
*)&dn);
+       cst = compcstype_db->find(Amf::to_string(&dn));
        return cst;
 }
 
-AVD_COMPCS_TYPE *avd_compcstype_get(const SaNameT *dn)
-{
-       SaNameT tmp = {0};
-
-       tmp.length = dn->length;
-       memcpy(tmp.value, dn->value, tmp.length);
-
-       return (AVD_COMPCS_TYPE *)ncs_patricia_tree_get(&compcstype_db, 
(uint8_t *)&tmp);
-}
-
-AVD_COMPCS_TYPE *avd_compcstype_getnext(const SaNameT *dn)
-{
-       SaNameT tmp = {0};
-
-       tmp.length = dn->length;
-       memcpy(tmp.value, dn->value, dn->length);
-
-       return (AVD_COMPCS_TYPE *)ncs_patricia_tree_getnext(&compcstype_db, 
(uint8_t *)&tmp);
-}
-
 /**
  * Validate configuration attributes for an SaAmfCompCsType object
  * @param cst
@@ -245,7 +214,7 @@ static AVD_COMPCS_TYPE *compcstype_creat
        ** If called at new active at failover, the object is found in the DB
        ** but needs to get configuration attributes initialized.
        */
-       if ((NULL == (compcstype = avd_compcstype_get(dn))) &&
+       if ((NULL == (compcstype = compcstype_db->find(Amf::to_string(dn)))) &&
            ((compcstype = avd_compcstype_new(dn)) == NULL))
                goto done;
 
@@ -284,7 +253,7 @@ static AVD_COMPCS_TYPE *compcstype_creat
 
 done:
        if (rc != 0)
-               avd_compcstype_delete(&compcstype);
+               compcstype_db->erase(Amf::to_string(&compcstype->name));
        delete [] cstype_name;
 
        return compcstype;
@@ -372,7 +341,7 @@ static SaAisErrorT compcstype_ccb_comple
                AVD_SU_SI_REL *curr_susi;
                AVD_COMP_CSI_REL *compcsi;
 
-               cst = avd_compcstype_get(&opdata->objectName);
+               cst = compcstype_db->find(Amf::to_string(&opdata->objectName));
                osafassert(cst);
                avsv_sanamet_init(&opdata->objectName, &comp_name, "safComp=");
                comp = avd_comp_get(&comp_name);
@@ -407,8 +376,11 @@ static void compcstype_ccb_apply_cb(CcbU
                compcstype_add_to_model(cst);
                break;
        case CCBUTIL_DELETE:
-               cst = avd_compcstype_get(&opdata->objectName);
-               avd_compcstype_delete(&cst);
+               cst = compcstype_db->find(Amf::to_string(&opdata->objectName));
+               if (cst != NULL) {
+                       compcstype_db->erase(Amf::to_string(&cst->name));
+                       delete cst;
+               }
                break;
        default:
                osafassert(0);
@@ -419,7 +391,7 @@ static void compcstype_ccb_apply_cb(CcbU
 static SaAisErrorT compcstype_rt_attr_callback(SaImmOiHandleT immOiHandle,
        const SaNameT *objectName, const SaImmAttrNameT *attributeNames)
 {
-       AVD_COMPCS_TYPE *cst = avd_compcstype_get(objectName);
+       AVD_COMPCS_TYPE *cst = compcstype_db->find(Amf::to_string(objectName));
        SaImmAttrNameT attributeName;
        int i = 0;
 
@@ -445,10 +417,7 @@ static SaAisErrorT compcstype_rt_attr_ca
 
 void avd_compcstype_constructor(void)
 {
-       NCS_PATRICIA_PARAMS patricia_params;
-
-       patricia_params.key_size = sizeof(SaNameT);
-       osafassert(ncs_patricia_tree_init(&compcstype_db, &patricia_params) == 
NCSCC_RC_SUCCESS);
+       compcstype_db = new AmfDb<std::string, AVD_COMPCS_TYPE>;
        avd_class_impl_set("SaAmfCompCsType", compcstype_rt_attr_callback, NULL,
                compcstype_ccb_completed_cb, compcstype_ccb_apply_cb);
 }
diff --git a/osaf/services/saf/amf/amfd/include/comp.h 
b/osaf/services/saf/amf/amfd/include/comp.h
--- a/osaf/services/saf/amf/amfd/include/comp.h
+++ b/osaf/services/saf/amf/amfd/include/comp.h
@@ -163,6 +163,7 @@ typedef struct avd_comp_cs_type_tag {
        SaNameT *saAmfCompAssignedCsi;
        AVD_COMP *comp;
 } AVD_COMPCS_TYPE;
+extern  AmfDb<std::string, AVD_COMPCS_TYPE> *compcstype_db;
 
 /* AMF Class SaAmfCtCsType */
 typedef struct {
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
@@ -1440,10 +1440,9 @@ void amfd_file_dump(const char *path)
                }
        }
 
-       dn.length = 0;
-       AVD_COMPCS_TYPE *compcstype;
-       for (compcstype = avd_compcstype_getnext(&dn); compcstype != NULL;
-            compcstype = avd_compcstype_getnext(&dn)) {
+       for (std::map<std::string, AVD_COMPCS_TYPE*>::const_iterator it = 
compcstype_db->begin();
+                       it != compcstype_db->end(); it++) {
+               const AVD_COMPCS_TYPE *compcstype = it->second;
                fprintf(f, "%s\n", compcstype->name.value);
                fprintf(f, "\tsaAmfCompNumCurrActiveCSIs=%u\n", 
compcstype->saAmfCompNumCurrActiveCSIs);
                fprintf(f, "\tsaAmfCompNumCurrStandbyCSIs=%u\n", 
compcstype->saAmfCompNumCurrStandbyCSIs);

------------------------------------------------------------------------------
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

Reply via email to