osaf/services/saf/amf/amfd/include/sutype.h | 9 +------
osaf/services/saf/amf/amfd/sgtype.cc | 2 +-
osaf/services/saf/amf/amfd/su.cc | 10 +++---
osaf/services/saf/amf/amfd/sutype.cc | 38 ++++++----------------------
4 files changed, 16 insertions(+), 43 deletions(-)
diff --git a/osaf/services/saf/amf/amfd/include/sutype.h
b/osaf/services/saf/amf/amfd/include/sutype.h
--- a/osaf/services/saf/amf/amfd/include/sutype.h
+++ b/osaf/services/saf/amf/amfd/include/sutype.h
@@ -31,6 +31,7 @@ struct avd_sutype {
unsigned int number_svc_types; /* size of array
saAmfSutProvidesSvcTypes */
AVD_SU *list_of_su;
};
+extern AmfDb<std::string, avd_sutype> *sutype_db;
/**
* Get SaAmfSUType from IMM and create internal objects
@@ -40,14 +41,6 @@ struct avd_sutype {
extern SaAisErrorT avd_sutype_config_get(void);
/**
- * Get SaAmfSUType object using given key
- * @param dn
- *
- * @return struct avd_sutype*
- */
-extern struct avd_sutype *avd_sutype_get(const SaNameT *dn);
-
-/**
* Class constructor, must be called before any other function
*/
extern void avd_sutype_constructor(void);
diff --git a/osaf/services/saf/amf/amfd/sgtype.cc
b/osaf/services/saf/amf/amfd/sgtype.cc
--- a/osaf/services/saf/amf/amfd/sgtype.cc
+++ b/osaf/services/saf/amf/amfd/sgtype.cc
@@ -144,7 +144,7 @@ static int is_config_valid(const SaNameT
for (j = 0; j < attr->attrValuesNumber; j++) {
SaNameT *name = (SaNameT *)attr->attrValues[j];
- sut = avd_sutype_get(name);
+ sut = sutype_db->find(Amf::to_string(name));
if (sut == NULL) {
if (opdata == NULL) {
report_ccb_validation_error(opdata, "'%s' does
not exist in model", name->value);
diff --git a/osaf/services/saf/amf/amfd/su.cc b/osaf/services/saf/amf/amfd/su.cc
--- a/osaf/services/saf/amf/amfd/su.cc
+++ b/osaf/services/saf/amf/amfd/su.cc
@@ -254,7 +254,7 @@ static int is_config_valid(const SaNameT
rc = immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSUType"),
attributes, 0, &saAmfSUType);
osafassert(rc == SA_AIS_OK);
- if ((sut = avd_sutype_get(&saAmfSUType)) != NULL) {
+ if ((sut = sutype_db->find(Amf::to_string(&saAmfSUType))) != NULL) {
saAmfSutIsExternal = sut->saAmfSutIsExternal;
} else {
/* SU type does not exist in current model, check CCB if passed
as param */
@@ -473,7 +473,7 @@ static AVD_SU *su_create(const SaNameT *
(void)
immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfSUHostNodeOrNodeGroup"),
attributes, 0, &su->saAmfSUHostNodeOrNodeGroup);
- if ((sut = avd_sutype_get(&su->saAmfSUType)) == NULL) {
+ if ((sut = sutype_db->find(Amf::to_string(&su->saAmfSUType))) == NULL) {
LOG_ER("saAmfSUType '%s' does not exist",
su->saAmfSUType.value);
goto done;
}
@@ -602,7 +602,7 @@ static void su_add_to_model(AVD_SU *su)
rc = su_db->insert(Amf::to_string(&su->name), su);
osafassert(rc == NCSCC_RC_SUCCESS);
}
- su->su_type = avd_sutype_get(&su->saAmfSUType);
+ su->su_type = sutype_db->find(Amf::to_string(&su->saAmfSUType));
osafassert(su->su_type);
avd_sutype_add_su(su);
avd_sg_add_su(su);
@@ -1301,7 +1301,7 @@ static SaAisErrorT su_ccb_completed_modi
rc = SA_AIS_ERR_BAD_OPERATION;
goto done;
}
- if (avd_sutype_get(&sutype_name) == NULL) {
+ if (sutype_db->find(Amf::to_string(&sutype_name)) ==
NULL) {
report_ccb_validation_error(opdata, "SU Type
not found '%s'", sutype_name.value);
rc = SA_AIS_ERR_BAD_OPERATION;
goto done;
@@ -1486,7 +1486,7 @@ static void su_ccb_apply_modify_hdlr(str
struct avd_sutype *sut;
SaNameT sutype_name = *(SaNameT*)
attr_mod->modAttr.attrValues[0];
TRACE("Modified saAmfSUType from '%s' to '%s'",
su->saAmfSUType.value, sutype_name.value);
- sut = avd_sutype_get(&sutype_name);
+ sut = sutype_db->find(Amf::to_string(&sutype_name));
avd_sutype_remove_su(su);
su->saAmfSUType = sutype_name;
su->su_type = sut;
diff --git a/osaf/services/saf/amf/amfd/sutype.cc
b/osaf/services/saf/amf/amfd/sutype.cc
--- a/osaf/services/saf/amf/amfd/sutype.cc
+++ b/osaf/services/saf/amf/amfd/sutype.cc
@@ -28,7 +28,7 @@
#include <ntf.h>
#include <proc.h>
-static NCS_PATRICIA_TREE sutype_db;
+AmfDb<std::string, avd_sutype> *sutype_db = NULL;
static struct avd_sutype *sutype_new(const SaNameT *dn)
{
@@ -36,7 +36,6 @@ static struct avd_sutype *sutype_new(con
memcpy(sutype->name.value, dn->value, dn->length);
sutype->name.length = dn->length;
- sutype->tree_node.key_info = (uint8_t *)&(sutype->name);
return sutype;
}
@@ -51,26 +50,10 @@ static void sutype_delete(struct avd_sut
static void sutype_db_add(struct avd_sutype *sutype)
{
- unsigned int rc = ncs_patricia_tree_add(&sutype_db, &sutype->tree_node);
+ unsigned int rc =
sutype_db->insert(Amf::to_string(&sutype->name),sutype);
osafassert(rc == NCSCC_RC_SUCCESS);
}
-static void sutype_db_delete(struct avd_sutype *sutype)
-{
- unsigned int rc = ncs_patricia_tree_del(&sutype_db, &sutype->tree_node);
- osafassert(rc == NCSCC_RC_SUCCESS);
-}
-
-struct avd_sutype *avd_sutype_get(const SaNameT *dn)
-{
- SaNameT tmp = {0};
-
- tmp.length = dn->length;
- memcpy(tmp.value, dn->value, tmp.length);
-
- return (struct avd_sutype *)ncs_patricia_tree_get(&sutype_db, (uint8_t
*)&tmp);
-}
-
static struct avd_sutype *sutype_create(const SaNameT *dn, const
SaImmAttrValuesT_2 **attributes)
{
const SaImmAttrValuesT_2 *attr;
@@ -208,7 +191,7 @@ SaAisErrorT avd_sutype_config_get(void)
if (!is_config_valid(&dn, attributes, NULL))
goto done2;
- if (( sut = avd_sutype_get(&dn)) == NULL) {
+ if (( sut = sutype_db->find(Amf::to_string(&dn))) == NULL) {
if ((sut = sutype_create(&dn, attributes)) == NULL) {
error = SA_AIS_ERR_FAILED_OPERATION;
@@ -243,7 +226,7 @@ static void sutype_ccb_apply_modify_hdlr
int i = 0;
TRACE_ENTER2("CCB ID %llu, '%s'", opdata->ccbId,
opdata->objectName.value);
- avd_sutype *sut = avd_sutype_get(&opdata->objectName);
+ avd_sutype *sut = sutype_db->find(Amf::to_string(&opdata->objectName));
while ((attr_mod = opdata->param.modify.attrMods[i++]) != NULL) {
if (!strcmp(attr_mod->modAttr.attrName,
"saAmfSutDefSUFailover")) {
@@ -284,8 +267,8 @@ static void sutype_ccb_apply_cb(CcbUtilO
sutype_ccb_apply_modify_hdlr(opdata);
break;
case CCBUTIL_DELETE:
- sut = avd_sutype_get(&opdata->objectName);
- sutype_db_delete(sut);
+ sut = sutype_db->find(Amf::to_string(&opdata->objectName));
+ sutype_db->erase(Amf::to_string(&sut->name));
sutype_delete(&sut);
break;
default:
@@ -306,7 +289,7 @@ static SaAisErrorT sutype_ccb_completed_
SaAisErrorT rc = SA_AIS_OK;
const SaImmAttrModificationT_2 *attr_mod;
int i = 0;
- avd_sutype *sut = avd_sutype_get(&opdata->objectName);
+ avd_sutype *sut = sutype_db->find(Amf::to_string(&opdata->objectName));
TRACE_ENTER2("CCB ID %llu, '%s'", opdata->ccbId,
opdata->objectName.value);
while ((attr_mod = opdata->param.modify.attrMods[i++]) != NULL) {
@@ -372,7 +355,7 @@ static SaAisErrorT sutype_ccb_completed_
rc = sutype_ccb_completed_modify_hdlr(opdata);
break;
case CCBUTIL_DELETE:
- sut = avd_sutype_get(&opdata->objectName);
+ sut = sutype_db->find(Amf::to_string(&opdata->objectName));
if (NULL != sut->list_of_su) {
/* check whether there exists a delete operation for
* each of the SU in the su_type list in the current
CCB
@@ -439,11 +422,8 @@ void avd_sutype_remove_su(AVD_SU* su)
void avd_sutype_constructor(void)
{
- NCS_PATRICIA_PARAMS patricia_params;
- patricia_params.key_size = sizeof(SaNameT);
- osafassert(ncs_patricia_tree_init(&sutype_db, &patricia_params) ==
NCSCC_RC_SUCCESS);
-
+ sutype_db = new AmfDb<std::string, avd_sutype>;
avd_class_impl_set("SaAmfSUBaseType", NULL, NULL,
avd_imm_default_OK_completed_cb, NULL);
avd_class_impl_set("SaAmfSUType", NULL, NULL,
------------------------------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel