osaf/services/saf/amf/amfd/include/si.h |   2 +-
 osaf/services/saf/amf/amfd/si.cc        |   4 ++--
 osaf/services/saf/amf/amfd/svctype.cc   |  27 ++++++---------------------
 3 files changed, 9 insertions(+), 24 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
@@ -132,6 +132,7 @@ typedef struct {
 
 extern AmfDb<AVD_SI> *si_db;
 extern AmfDb<AVD_SVC_TYPE_CS_TYPE> *svctypecstypes_db;
+extern AmfDb<AVD_SVC_TYPE> *svctype_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
@@ -153,7 +154,6 @@ extern AVD_SI *avd_si_get(const SaNameT 
 extern SaAisErrorT avd_si_config_get(struct avd_app_tag *app);
 extern void avd_si_constructor(void);
 
-extern AVD_SVC_TYPE *avd_svctype_get(const SaNameT *dn);
 extern SaAisErrorT avd_svctype_config_get(void);
 extern void avd_svctype_add_si(AVD_SI *si);
 extern void avd_svctype_remove_si(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
@@ -469,7 +469,7 @@ static void si_add_to_model(AVD_SI *si)
 
        avd_si_db_add(si);
 
-       si->svc_type = avd_svctype_get(&si->saAmfSvcType);
+       si->svc_type = svctype_db->find(&si->saAmfSvcType);
 
        if (si->saAmfSIProtectedbySG.length > 0)
                si->sg_of_si = avd_sg_get(&si->saAmfSIProtectedbySG);
@@ -511,7 +511,7 @@ static int is_config_valid(const SaNameT
        rc = immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSvcType"), 
attributes, 0, &aname);
        osafassert(rc == SA_AIS_OK);
 
-       if (avd_svctype_get(&aname) == NULL) {
+       if (svctype_db->find(&aname) == NULL) {
                /* SVC type does not exist in current model, check CCB if 
passed as param */
                if (opdata == NULL) {
                        report_ccb_validation_error(opdata, "'%s' does not 
exist in model", aname.value);
diff --git a/osaf/services/saf/amf/amfd/svctype.cc 
b/osaf/services/saf/amf/amfd/svctype.cc
--- a/osaf/services/saf/amf/amfd/svctype.cc
+++ b/osaf/services/saf/amf/amfd/svctype.cc
@@ -28,7 +28,7 @@
 #include <csi.h>
 #include <proc.h>
 
-static NCS_PATRICIA_TREE svctype_db;
+AmfDb<AVD_SVC_TYPE> *svctype_db = NULL;
 
 //
 // TODO(HANO) Temporary use this function instead of strdup which uses malloc.
@@ -43,24 +43,14 @@ static char *StrDup(const char *s)
 
 static void svctype_db_add(AVD_SVC_TYPE *svct)
 {
-       unsigned int rc = ncs_patricia_tree_add(&svctype_db, &svct->tree_node);
+       unsigned int rc = svctype_db->insert(svct);
        osafassert (rc == NCSCC_RC_SUCCESS);
 }
 
-AVD_SVC_TYPE *avd_svctype_get(const SaNameT *dn)
-{
-       SaNameT tmp = {0};
-
-       tmp.length = dn->length;
-       memcpy(tmp.value, dn->value, tmp.length);
-
-       return (AVD_SVC_TYPE *)ncs_patricia_tree_get(&svctype_db, (uint8_t 
*)&tmp);
-}
 
 static void svctype_delete(AVD_SVC_TYPE *svc_type)
 {
-       unsigned int rc = ncs_patricia_tree_del(&svctype_db, 
&svc_type->tree_node);
-       osafassert(rc == NCSCC_RC_SUCCESS);
+       svctype_db->erase(svc_type);
 
        if (svc_type->saAmfSvcDefActiveWeight != NULL) {
                unsigned int i = 0;
@@ -94,7 +84,6 @@ static AVD_SVC_TYPE *svctype_create(cons
 
        memcpy(svct->name.value, dn->value, dn->length);
        svct->name.length = dn->length;
-       svct->tree_node.key_info = (uint8_t *)&svct->name;
        svct->saAmfSvcDefActiveWeight = NULL;
        svct->saAmfSvcDefStandbyWeight = NULL;
 
@@ -159,7 +148,7 @@ static SaAisErrorT svctype_ccb_completed
                report_ccb_validation_error(opdata, "Modification of 
SaAmfSvcType not supported");
                break;
        case CCBUTIL_DELETE:
-               svc_type = avd_svctype_get(&opdata->objectName);
+               svc_type = svctype_db->find(&opdata->objectName);
                if (NULL != svc_type->list_of_si) {
                        /* check whether there exists a delete operation for
                         * each of the SI in the svc_type list in the current 
CCB
@@ -250,7 +239,7 @@ SaAisErrorT avd_svctype_config_get(void)
                if (!is_config_valid(&dn, attributes, NULL))
                        goto done2;
 
-               if ((svc_type = avd_svctype_get(&dn))==NULL) {
+               if ((svc_type = svctype_db->find(&dn)) == NULL) {
                        if ((svc_type = svctype_create(&dn, attributes)) == 
NULL)
                                goto done2;
 
@@ -308,11 +297,7 @@ void avd_svctype_remove_si(AVD_SI *si)
 
 void avd_svctype_constructor(void)
 {
-       NCS_PATRICIA_PARAMS patricia_params;
-
-       patricia_params.key_size = sizeof(SaNameT);
-
-       osafassert(ncs_patricia_tree_init(&svctype_db, &patricia_params) == 
NCSCC_RC_SUCCESS);
+       svctype_db = new AmfDb<AVD_SVC_TYPE>;
 
        avd_class_impl_set("SaAmfSvcType", NULL, NULL, svctype_ccb_completed_cb,
                        svctype_ccb_apply_cb);

------------------------------------------------------------------------------
"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
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to