> -     for (ng = ng_getnext(&dn); ng != NULL; ng = ng_getnext(&dn))
> +     for (std::map<std::string, AVD_AMF_NG*>::const_iterator it = 
> nodegroup_db->begin();
> +                     it != nodegroup_db->end(); ) {
> +             AVD_AMF_NG *ng = it->second;
> +             it++;
[Hans] move to for statements after semicolon
> 
> >             ng_delete(ng);
> > +   }

I incremented it before ng_delete and not in for loop, because the element is 
getting deleted in ng_delete(ng);
So, I thought it is rather good to increment to next before, it gets deleted.

Thanks
-Nagu

> -----Original Message-----
> From: Hans Feldt [mailto:hans.fe...@ericsson.com]
> Sent: 23 May 2014 15:31
> To: Nagendra Kumar; Hans Nordebäck; Praveen Malviya
> Cc: opensaf-devel@lists.sourceforge.net
> Subject: RE: [PATCH 1 of 1] amfd: replace patricia tree with stl::maps in
> nodegroup [#713]
> 
> Ack with minor comments inline
> /Hans
> 
> > -----Original Message-----
> > From: nagendr...@oracle.com [mailto:nagendr...@oracle.com]
> > Sent: den 23 maj 2014 10:45
> > To: Hans Feldt; Hans Nordebäck; praveen.malv...@oracle.com
> > Cc: opensaf-devel@lists.sourceforge.net
> > Subject: [PATCH 1 of 1] amfd: replace patricia tree with stl::maps in
> nodegroup [#713]
> >
> >  osaf/services/saf/amf/amfd/include/node.h |   2 +-
> >  osaf/services/saf/amf/amfd/nodegroup.cc   |  76 
> > ++++++++----------------------
> >  2 files changed, 22 insertions(+), 56 deletions(-)
> >
> >
> > diff --git a/osaf/services/saf/amf/amfd/include/node.h
> b/osaf/services/saf/amf/amfd/include/node.h
> > --- a/osaf/services/saf/amf/amfd/include/node.h
> > +++ b/osaf/services/saf/amf/amfd/include/node.h
> > @@ -147,7 +147,7 @@ typedef struct avd_avnd_tag {
> >  typedef struct avd_ng_tag {
> >
> >     NCS_PATRICIA_NODE tree_node;    /* key will be AMF  node
> group name */
> > -   SaNameT ng_name;
> > +   SaNameT name;
> >     uint32_t number_nodes;  /* number of element in
> saAmfNGNodeList */
> >     SaNameT *saAmfNGNodeList;       /* array of node names in group */
> >
> > diff --git a/osaf/services/saf/amf/amfd/nodegroup.cc
> b/osaf/services/saf/amf/amfd/nodegroup.cc
> > --- a/osaf/services/saf/amf/amfd/nodegroup.cc
> > +++ b/osaf/services/saf/amf/amfd/nodegroup.cc
> > @@ -23,17 +23,7 @@
> >  #include <cluster.h>
> >  #include <imm.h>
> >
> > -static NCS_PATRICIA_TREE nodegroup_db;
> > -
> > -/**
> > - * Add a node group object to the db.
> > - * @param ng
> > - */
> > -static void ng_db_add(AVD_AMF_NG *ng)
> > -{
> > -   unsigned int rc = ncs_patricia_tree_add(&nodegroup_db, &ng-
> >tree_node);
> > -   osafassert(rc == NCSCC_RC_SUCCESS);
> > -}
> > +AmfDb<AVD_AMF_NG> *nodegroup_db = 0;
> [Hans] = NULL;
> 
> >
> >  /**
> >   * Lookup object in db using dn
> > @@ -43,28 +33,7 @@ static void ng_db_add(AVD_AMF_NG *ng)
> >   */
> >  AVD_AMF_NG *avd_ng_get(const SaNameT *dn)
> >  {
> > -   SaNameT tmp = {0};
> > -
> > -   tmp.length = dn->length;
> > -   memcpy(tmp.value, dn->value, tmp.length);
> > -
> > -   return (AVD_AMF_NG *)ncs_patricia_tree_get(&nodegroup_db,
> (uint8_t *)&tmp);
> > -}
> > -
> > -/**
> > - * Get next object from db using dn
> > - * @param dn
> > - *
> > - * @return AVD_AMF_NG*
> > - */
> > -static AVD_AMF_NG *ng_getnext(const SaNameT *dn)
> > -{
> > -   SaNameT tmp = {0};
> > -
> > -   tmp.length = dn->length;
> > -   memcpy(tmp.value, dn->value, tmp.length);
> > -
> > -   return (AVD_AMF_NG *)ncs_patricia_tree_getnext(&nodegroup_db,
> (uint8_t *)&tmp);
> > +   return nodegroup_db->find(dn);
> >  }
> >
> >  /**
> > @@ -138,9 +107,9 @@ static AVD_AMF_NG *ng_create(SaNameT *dn
> >
> >     ng = new AVD_AMF_NG();
> >
> > -   memcpy(ng->ng_name.value, dn->value, dn->length);
> > -   ng->ng_name.length = dn->length;
> > -   ng->tree_node.key_info = (uint8_t *)&(ng->ng_name);
> > +   memcpy(ng->name.value, dn->value, dn->length);
> > +   ng->name.length = dn->length;
> > +   ng->tree_node.key_info = (uint8_t *)&(ng->name);
> >
> >     if
> ((immutil_getAttrValuesNumber(const_cast<SaImmAttrNameT>("saAmfNGNod
> eList"), attributes,
> >             &values_number) == SA_AIS_OK) && (values_number > 0)) {
> > @@ -174,10 +143,7 @@ done:
> >   */
> >  static void ng_delete(AVD_AMF_NG *ng)
> >  {
> > -   unsigned int rc = ncs_patricia_tree_del(&nodegroup_db, &ng-
> >tree_node);
> > -   osafassert(rc == NCSCC_RC_SUCCESS);
> > -
> > -   osafassert(ng);
> > +   nodegroup_db->erase(ng);
> >     free(ng->saAmfNGNodeList);
> >     delete ng;
> >  }
> > @@ -203,8 +169,12 @@ SaAisErrorT avd_ng_config_get(void)
> >     /* Could be here as a consequence of a fail/switch-over. Delete the DB
> >     ** since it is anyway not synced and needs to be rebuilt. */
> >     dn.length = 0;
> > -   for (ng = ng_getnext(&dn); ng != NULL; ng = ng_getnext(&dn))
> > +   for (std::map<std::string, AVD_AMF_NG*>::const_iterator it =
> nodegroup_db->begin();
> > +                   it != nodegroup_db->end(); ) {
> > +           AVD_AMF_NG *ng = it->second;
> > +           it++;
> [Hans] move to for statements after semicolon
> 
> >             ng_delete(ng);
> > +   }
> >
> >     searchParam.searchOneAttr.attrName =
> const_cast<SaImmAttrNameT>("SaImmAttrClassName");
> >     searchParam.searchOneAttr.attrValueType =
> SA_IMM_ATTR_SASTRINGT;
> > @@ -228,7 +198,7 @@ SaAisErrorT avd_ng_config_get(void)
> >             if ((ng = ng_create(&dn, (const SaImmAttrValuesT_2
> **)attributes)) == NULL)
> >                     goto done2;
> >
> > -           ng_db_add(ng);
> > +           nodegroup_db->insert(ng);
> >     }
> >
> >     rc = SA_AIS_OK;
> > @@ -249,10 +219,10 @@ done1:
> >   */
> >  static bool su_is_mapped_to_node_via_nodegroup(const AVD_SU *su, const
> AVD_AMF_NG *ng)
> >  {
> > -   if ((memcmp(&ng->ng_name, &su->saAmfSUHostNodeOrNodeGroup,
> sizeof(SaNameT)) == 0) ||
> > -       (memcmp(&ng->ng_name, &su->sg_of_su-
> >saAmfSGSuHostNodeGroup, sizeof(SaNameT)) == 0)) {
> > +   if ((memcmp(&ng->name, &su->saAmfSUHostNodeOrNodeGroup,
> sizeof(SaNameT)) == 0) ||
> > +       (memcmp(&ng->name, &su->sg_of_su->saAmfSGSuHostNodeGroup,
> sizeof(SaNameT)) == 0)) {
> >
> > -           TRACE("SU '%s' mapped using '%s'", su->name.value, ng-
> >ng_name.value);
> > +           TRACE("SU '%s' mapped using '%s'", su->name.value, ng-
> >name.value);
> >             return true;
> >     }
> >
> > @@ -337,7 +307,7 @@ static SaAisErrorT ng_ccb_completed_modi
> >                                     if
> (su_is_mapped_to_node_via_nodegroup(su, ng)) {
> >
>       report_ccb_validation_error(opdata, "Cannot delete '%s' from '%s'."
> >                                                             " An SU is
> mapped using node group",
> > -                                                           node-
> >name.value, ng->ng_name.value);
> > +                                                           node-
> >name.value, ng->name.value);
> >                                             goto done;
> >
> >                                     }
> > @@ -348,7 +318,7 @@ static SaAisErrorT ng_ccb_completed_modi
> >                                     if
> (su_is_mapped_to_node_via_nodegroup(su, ng)) {
> >
>       report_ccb_validation_error(opdata, "Cannot delete '%s' from '%s'."
> >                                                             " An SU is
> mapped using node group",
> > -                                                           node-
> >name.value, ng->ng_name.value);
> > +                                                           node-
> >name.value, ng->name.value);
> >                                             goto done;
> >                                     }
> >                             }
> > @@ -444,7 +414,7 @@ static SaAisErrorT ng_ccb_completed_dele
> >                     if (su_is_mapped_to_node_via_nodegroup(su, ng) &&
> >                         is_deleted_in_ccb(opdata->ccbId, &su->name) ==
> false) {
> >                             report_ccb_validation_error(opdata, "Cannot
> delete '%s' because '%s' is mapped using it",
> > -                                   ng->ng_name.value, su->name.value);
> > +                                   ng->name.value, su->name.value);
> >                             goto done;
> >                     }
> >             }
> > @@ -453,7 +423,7 @@ static SaAisErrorT ng_ccb_completed_dele
> >                     if (su_is_mapped_to_node_via_nodegroup(su, ng) &&
> >                         is_deleted_in_ccb(opdata->ccbId, &su->name) ==
> false) {
> >                             report_ccb_validation_error(opdata, "Cannot
> delete '%s' because '%s' is mapped using it",
> > -                                   ng->ng_name.value, su->name.value);
> > +                                   ng->name.value, su->name.value);
> >                             goto done;
> >                     }
> >             }
> > @@ -571,7 +541,7 @@ static void ng_ccb_apply_cb(CcbUtilOpera
> >     case CCBUTIL_CREATE:
> >             ng = ng_create(&opdata->objectName, opdata-
> >param.create.attrValues);
> >             osafassert(ng);
> > -           ng_db_add(ng);
> > +           nodegroup_db->insert(ng);
> >             break;
> >     case CCBUTIL_MODIFY:
> >             ng_ccb_apply_modify_hdlr(opdata);
> > @@ -593,11 +563,7 @@ static void ng_ccb_apply_cb(CcbUtilOpera
> >   */
> >  void avd_ng_constructor(void)
> >  {
> > -   NCS_PATRICIA_PARAMS patricia_params;
> > -
> > -   patricia_params.key_size = sizeof(SaNameT);
> > -   osafassert(ncs_patricia_tree_init(&nodegroup_db, &patricia_params)
> == NCSCC_RC_SUCCESS);
> > -
> > +   nodegroup_db = new AmfDb<AVD_AMF_NG>;
> >     avd_class_impl_set("SaAmfNodeGroup", NULL, NULL,
> ng_ccb_completed_cb,
> >                     ng_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