ack, code review only/Regards HansN
On 06/04/14 12:19, praveen.malv...@oracle.com wrote:
>   osaf/services/saf/amf/amfd/csi.cc        |   8 +++---
>   osaf/services/saf/amf/amfd/cstype.cc     |  35 
> +++++--------------------------
>   osaf/services/saf/amf/amfd/include/csi.h |   3 +-
>   3 files changed, 12 insertions(+), 34 deletions(-)
>
>
> diff --git a/osaf/services/saf/amf/amfd/csi.cc 
> b/osaf/services/saf/amf/amfd/csi.cc
> --- a/osaf/services/saf/amf/amfd/csi.cc
> +++ b/osaf/services/saf/amf/amfd/csi.cc
> @@ -117,7 +117,7 @@ static int is_config_valid(const SaNameT
>       rc = immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfCSType"), 
> attributes, 0, &aname);
>       osafassert(rc == SA_AIS_OK);
>   
> -     if (avd_cstype_get(&aname) == NULL) {
> +     if (cstype_db->find(Amf::to_string(&aname)) == NULL) {
>               /* CS 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);
> @@ -331,7 +331,7 @@ static void csi_get_attr_and_add_to_mode
>               TRACE_ENTER2("DEP not configured, marking rank 1. Csi'%s', 
> Rank'%u'",csi->name.value,csi->rank);
>       }
>   
> -     csi->cstype = avd_cstype_get(&csi->saAmfCSType);
> +     csi->cstype = cstype_db->find(Amf::to_string(&csi->saAmfCSType));
>       csi->si = avd_si_get(si_name);
>   
>       avd_cstype_add_csi(csi);
> @@ -546,7 +546,7 @@ static SaAisErrorT csi_ccb_completed_mod
>                               rc = SA_AIS_ERR_BAD_OPERATION;
>                               goto done;
>                       }
> -                     if (avd_cstype_get(&cstype_name) == NULL) {
> +                     if (cstype_db->find(Amf::to_string(&cstype_name)) == 
> NULL) {
>                               report_ccb_validation_error(opdata, "CS Type 
> not found '%s'", cstype_name.value);
>                               rc = SA_AIS_ERR_BAD_OPERATION;
>                               goto done;
> @@ -778,7 +778,7 @@ static void csi_ccb_apply_modify_hdlr(st
>                       SaNameT cstype_name = *(SaNameT*) 
> attr_mod->modAttr.attrValues[0];
>                       TRACE("saAmfCSType modified from '%s' to '%s' for 
> Csi'%s'", csi->saAmfCSType.value,
>                                       cstype_name.value, csi->name.value);
> -                     csi_type = avd_cstype_get(&cstype_name);
> +                     csi_type = 
> cstype_db->find(Amf::to_string(&cstype_name));
>                       avd_cstype_remove_csi(csi);
>                       csi->saAmfCSType = cstype_name;
>                       csi->cstype = csi_type;
> diff --git a/osaf/services/saf/amf/amfd/cstype.cc 
> b/osaf/services/saf/amf/amfd/cstype.cc
> --- a/osaf/services/saf/amf/amfd/cstype.cc
> +++ b/osaf/services/saf/amf/amfd/cstype.cc
> @@ -22,7 +22,7 @@
>   #include <csi.h>
>   #include <imm.h>
>   
> -static NCS_PATRICIA_TREE cstype_db;
> +AmfDb<std::string, avd_cstype_t> *cstype_db = NULL;
>   
>   //
>   // TODO(HANO) Temporary use this function instead of strdup which uses 
> malloc.
> @@ -37,7 +37,7 @@ static char *StrDup(const char *s)
>   
>   static void cstype_add_to_model(avd_cstype_t *cst)
>   {
> -     unsigned int rc = ncs_patricia_tree_add(&cstype_db, &cst->tree_node);
> +     uint32_t rc = cstype_db->insert(Amf::to_string(&cst->name),cst);
>       osafassert(rc == NCSCC_RC_SUCCESS);
>   }
>   
> @@ -52,7 +52,6 @@ static avd_cstype_t *cstype_create(const
>   
>       memcpy(cst->name.value, dn->value, dn->length);
>       cst->name.length = dn->length;
> -     cst->tree_node.key_info = (uint8_t *)&cst->name;
>   
>       if 
> ((immutil_getAttrValuesNumber(const_cast<SaImmAttrNameT>("saAmfCSAttrName"), 
> attributes, &values_number) == SA_AIS_OK) &&
>           (values_number > 0)) {
> @@ -72,39 +71,20 @@ static avd_cstype_t *cstype_create(const
>    */
>   static void cstype_delete(avd_cstype_t *cst)
>   {
> -     unsigned int rc;
>       char *p;
>       int i = 0;
>   
> -     rc = ncs_patricia_tree_del(&cstype_db, &cst->tree_node);
> -     osafassert(rc == NCSCC_RC_SUCCESS);
> +     cstype_db->erase(Amf::to_string(&cst->name));
>   
>       if (cst->saAmfCSAttrName != NULL) {
>               while ((p = cst->saAmfCSAttrName[i++]) != NULL) {
>                       delete [] p;
>               }
>       }
> -
>       delete [] cst->saAmfCSAttrName;
>       delete cst;
>   }
>   
> -/**
> - * Lookup object using name in DB
> - * @param dn
> - *
> - * @return avd_cstype_t*
> - */
> -avd_cstype_t *avd_cstype_get(const SaNameT *dn)
> -{
> -     SaNameT tmp = {0};
> -
> -     tmp.length = dn->length;
> -     memcpy(tmp.value, dn->value, tmp.length);
> -
> -     return (avd_cstype_t *)ncs_patricia_tree_get(&cstype_db, (uint8_t 
> *)&tmp);
> -}
> -
>   void avd_cstype_add_csi(AVD_CSI *csi)
>   {
>       csi->csi_list_cs_type_next = csi->cstype->list_of_csi;
> @@ -190,7 +170,7 @@ SaAisErrorT avd_cstype_config_get(void)
>               if (!is_config_valid(&dn, NULL))
>                       goto done2;
>   
> -             if ((cst = avd_cstype_get(&dn)) == NULL){
> +             if ((cst = cstype_db->find(Amf::to_string(&dn))) == NULL){
>                       if ((cst = cstype_create(&dn, attributes)) == NULL)
>                               goto done2;
>   
> @@ -232,7 +212,7 @@ static SaAisErrorT cstype_ccb_completed_
>               report_ccb_validation_error(opdata, "Modification of 
> SaAmfCSType not supported");
>               break;
>       case CCBUTIL_DELETE:
> -             cst = avd_cstype_get(&opdata->objectName);
> +             cst = cstype_db->find(Amf::to_string(&opdata->objectName));
>               if (cst->list_of_csi != NULL) {
>                       /* check whether there exists a delete operation for
>                        * each of the CSI in the cs_type list in the current 
> CCB
> @@ -286,10 +266,7 @@ static void cstype_ccb_apply_cb(CcbUtilO
>   
>   void avd_cstype_constructor(void)
>   {
> -     NCS_PATRICIA_PARAMS patricia_params;
> -
> -     patricia_params.key_size = sizeof(SaNameT);
> -     osafassert(ncs_patricia_tree_init(&cstype_db, &patricia_params) == 
> NCSCC_RC_SUCCESS);
> +     cstype_db= new AmfDb<std::string, avd_cstype_t>;
>   
>       avd_class_impl_set("SaAmfCSType", NULL, NULL, cstype_ccb_completed_hdlr,
>               cstype_ccb_apply_cb);
> diff --git a/osaf/services/saf/amf/amfd/include/csi.h 
> b/osaf/services/saf/amf/amfd/include/csi.h
> --- a/osaf/services/saf/amf/amfd/include/csi.h
> +++ b/osaf/services/saf/amf/amfd/include/csi.h
> @@ -84,12 +84,13 @@ typedef struct avd_csi_tag {
>   } AVD_CSI;
>   
>   typedef struct avd_cstype {
> -     NCS_PATRICIA_NODE tree_node;    /* key is name */
>       SaNameT name;           /* name of the CSType */
>       SaStringT *saAmfCSAttrName;
>       AVD_CSI *list_of_csi;
>   } avd_cstype_t;
>   
> +extern AmfDb<std::string, avd_cstype_t> *cstype_db;
> +
>   /* This data structure lives in the AvD and reflects relationship
>    * between the component and CSI on the AvD.
>    */


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