Ack, code review only, two questions ,
1) why is tree_node kept?
2) why is the ++it not in the for loop body at:
for (std::map<std::string, AVD_AMF_NG*>::const_iterator it =
nodegroup_db->begin();
+ it != nodegroup_db->end(); ) {
/Regards HansN
On 05/23/14 10:45, [email protected] wrote:
> 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;
>
> /**
> * 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>("saAmfNGNodeList"),
> 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++;
> 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
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel