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(&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(&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(&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(&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<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(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(cst);
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(&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(&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<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<avd_cstype_t> *cstype_db;
+
/* This data structure lives in the AvD and reflects relationship
* between the component and CSI on the AvD.
*/
------------------------------------------------------------------------------
"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