osaf/services/saf/amf/amfd/ckpt_enc.cc | 7 +++----
osaf/services/saf/amf/amfd/imm.cc | 9 +++------
osaf/services/saf/amf/amfd/include/si.h | 2 +-
osaf/services/saf/amf/amfd/si.cc | 32 ++++++++------------------------
osaf/services/saf/amf/amfd/util.cc | 6 +++---
5 files changed, 18 insertions(+), 38 deletions(-)
diff --git a/osaf/services/saf/amf/amfd/ckpt_enc.cc
b/osaf/services/saf/amf/amfd/ckpt_enc.cc
--- a/osaf/services/saf/amf/amfd/ckpt_enc.cc
+++ b/osaf/services/saf/amf/amfd/ckpt_enc.cc
@@ -2370,7 +2370,6 @@ static uint32_t enc_cs_su_config(AVD_CL_
static uint32_t enc_cs_si_config(AVD_CL_CB *cb, NCS_MBCSV_CB_ENC *enc,
uint32_t *num_of_obj)
{
uint32_t status = NCSCC_RC_SUCCESS;
- AVD_SI *si;
SaNameT si_name;
EDU_ERR ederror = static_cast<EDU_ERR>(0);
TRACE_ENTER();
@@ -2378,9 +2377,9 @@ static uint32_t enc_cs_si_config(AVD_CL_
/*
* Walk through the entire list and send the entire list data.
*/
- si_name.length = 0;
- for (si = avd_si_getnext(&si_name); si != NULL;
- si = avd_si_getnext(&si_name)) {
+ for (std::map<std::string, AVD_SI*>::const_iterator it = si_db->begin();
+ it != si_db->end(); it++) {
+ AVD_SI *si = it->second;
status = m_NCS_EDU_VER_EXEC(&cb->edu_hdl, avsv_edp_ckpt_msg_si,
&enc->io_uba,
EDP_OP_TYPE_ENC, si, &ederror,
enc->i_peer_version);
diff --git a/osaf/services/saf/amf/amfd/imm.cc
b/osaf/services/saf/amf/amfd/imm.cc
--- a/osaf/services/saf/amf/amfd/imm.cc
+++ b/osaf/services/saf/amf/amfd/imm.cc
@@ -1579,8 +1579,6 @@ void avd_imm_update_runtime_attrs(void)
AVD_COMP *comp;
SaNameT node_name = {0};
AVD_AVND *node;
- SaNameT si_name = {0};
- AVD_SI *si;
/* Update SU Class runtime cached attributes. */
for (std::map<std::string, AVD_SU*>::const_iterator it = su_db->begin();
@@ -1631,12 +1629,11 @@ void avd_imm_update_runtime_attrs(void)
}
/* Update Node Class runtime cached attributes. */
- si = avd_si_getnext(&si_name);
- while (si != NULL) {
+ for (std::map<std::string, AVD_SI*>::const_iterator it = si_db->begin();
+ it != si_db->end(); it++) {
+ AVD_SI *si = it->second;
avd_saImmOiRtObjectUpdate(&si->name, "saAmfSIAssignmentState",
SA_IMM_ATTR_SAUINT32T, &si->saAmfSIAssignmentState);
-
- si = avd_si_getnext(&si->name);
}
}
diff --git a/osaf/services/saf/amf/amfd/include/si.h
b/osaf/services/saf/amf/amfd/include/si.h
--- a/osaf/services/saf/amf/amfd/include/si.h
+++ b/osaf/services/saf/amf/amfd/include/si.h
@@ -132,6 +132,7 @@ typedef struct {
} AVD_SVC_TYPE_CS_TYPE;
+extern AmfDb<AVD_SI> *si_db;
#define AVD_SI_NULL ((AVD_SI *)0)
#define m_AVD_SI_ACTV_MAX_SU(l_si) (l_si)->saAmfSIPrefActiveAssignments
#define m_AVD_SI_ACTV_CURR_SU(l_si) (l_si)->saAmfSINumCurrActiveAssignments
@@ -150,7 +151,6 @@ extern AVD_SI *avd_si_new(const SaNameT
extern void avd_si_delete(AVD_SI *si);
extern void avd_si_db_add(AVD_SI *si);
extern AVD_SI *avd_si_get(const SaNameT *si_name);
-extern AVD_SI *avd_si_getnext(const SaNameT *si_name);
extern SaAisErrorT avd_si_config_get(struct avd_app_tag *app);
extern void avd_si_constructor(void);
diff --git a/osaf/services/saf/amf/amfd/si.cc b/osaf/services/saf/amf/amfd/si.cc
--- a/osaf/services/saf/amf/amfd/si.cc
+++ b/osaf/services/saf/amf/amfd/si.cc
@@ -27,7 +27,8 @@
#include <proc.h>
#include <si_dep.h>
-static NCS_PATRICIA_TREE si_db;
+AmfDb<AVD_SI> *si_db = 0;
+
static void avd_si_add_csi_db(struct avd_csi_tag* csi);
static void si_update_ass_state(AVD_SI *si);
@@ -365,8 +366,6 @@ static void si_delete_csis(AVD_SI *si)
void avd_si_delete(AVD_SI *si)
{
- unsigned int rc;
-
TRACE_ENTER2("%s", si->name.value);
/* All CSI under this should have been deleted by now on the active
@@ -385,8 +384,7 @@ void avd_si_delete(AVD_SI *si)
SA_NTF_SOFTWARE_ERROR);
}
- rc = ncs_patricia_tree_del(&si_db, &si->tree_node);
- osafassert(rc == NCSCC_RC_SUCCESS);
+ si_db->erase(si);
if (si->saAmfSIActiveWeight != NULL) {
unsigned int i = 0;
@@ -434,8 +432,8 @@ void avd_si_db_add(AVD_SI *si)
{
unsigned int rc;
- if (avd_si_get(&si->name) == NULL) {
- rc = ncs_patricia_tree_add(&si_db, &si->tree_node);
+ if (si_db->find(&si->name) == NULL) {
+ rc = si_db->insert(si);
osafassert(rc == NCSCC_RC_SUCCESS);
}
}
@@ -450,21 +448,10 @@ AVD_SI *avd_si_get(const SaNameT *dn)
tmp.length = dn->length;
memcpy(tmp.value, dn->value, tmp.length);
- return (AVD_SI *)ncs_patricia_tree_get(&si_db, (uint8_t *)&tmp);
+ return si_db->find(dn);
}
-AVD_SI *avd_si_getnext(const SaNameT *dn)
-{
- SaNameT tmp = {0};
- if (dn->length > SA_MAX_NAME_LENGTH)
- return NULL;
-
- tmp.length = dn->length;
- memcpy(tmp.value, dn->value, tmp.length);
-
- return (AVD_SI *)ncs_patricia_tree_getnext(&si_db, (uint8_t *)&tmp);
-}
static void si_add_to_model(AVD_SI *si)
{
@@ -581,7 +568,7 @@ static AVD_SI *si_create(SaNameT *si_nam
** If called at new active at failover, the object is found in the DB
** but needs to get configuration attributes initialized.
*/
- if (NULL == (si = avd_si_get(si_name))) {
+ if (NULL == (si = si_db->find(si_name))) {
if ((si = avd_si_new(si_name)) == NULL)
goto done;
} else {
@@ -1386,10 +1373,7 @@ void avd_si_inc_curr_stdby_dec_act_ass(A
void avd_si_constructor(void)
{
- NCS_PATRICIA_PARAMS patricia_params;
-
- patricia_params.key_size = sizeof(SaNameT);
- osafassert(ncs_patricia_tree_init(&si_db, &patricia_params) ==
NCSCC_RC_SUCCESS);
+ si_db = new AmfDb<AVD_SI>;
avd_class_impl_set("SaAmfSI", si_rt_attr_cb, si_admin_op_cb,
si_ccb_completed_cb, si_ccb_apply_cb);
}
diff --git a/osaf/services/saf/amf/amfd/util.cc
b/osaf/services/saf/amf/amfd/util.cc
--- a/osaf/services/saf/amf/amfd/util.cc
+++ b/osaf/services/saf/amf/amfd/util.cc
@@ -1412,9 +1412,9 @@ void amfd_file_dump(const char *path)
dn = comp->comp_info.name;
}
- AVD_SI *si;
- dn.length = 0;
- for (si = avd_si_getnext(&dn); si != NULL; si = avd_si_getnext(&dn)) {
+ for (std::map<std::string, AVD_SI*>::const_iterator it = si_db->begin();
+ it != si_db->end(); it++) {
+ const AVD_SI *si = it->second;
fprintf(f, "%s\n", si->name.value);
fprintf(f, "\tsaAmfSIAdminState=%u\n", si->saAmfSIAdminState);
fprintf(f, "\tsaAmfSIAssignmentStatee=%u\n",
si->saAmfSIAssignmentState);
------------------------------------------------------------------------------
"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