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

Reply via email to