-               rc = si_db->insert(Amf::to_string(&si->name), si);
-               osafassert(rc == NCSCC_RC_SUCCESS);


In my original patch this change is not there.
I am attaching the patch.

Thanks
Praveen
On 04-Jun-14 5:14 PM, Hans Nordebäck wrote:
Hi Praveen, one comment inline below/Regards HansN

-----Original Message-----
From: praveen.malv...@oracle.com [mailto:praveen.malv...@oracle.com]
Sent: den 4 juni 2014 12:20
To: Hans Nordebäck; Hans Feldt; nagendr...@oracle.com
Cc: opensaf-devel@lists.sourceforge.net
Subject: [PATCH 01 of 12] amfd : use db_template in AVD_SVC_TYPE_CS_TYPE [#713]

  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);
[HansN] why is the insert removed?
        }
  }
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),svctypec
+stype);
        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);  
}

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

Reply via email to