osaf/services/saf/amf/amfd/sg_nored_fsm.cc | 78 +++++++++++++----------------
1 files changed, 34 insertions(+), 44 deletions(-)
diff --git a/osaf/services/saf/amf/amfd/sg_nored_fsm.cc
b/osaf/services/saf/amf/amfd/sg_nored_fsm.cc
--- a/osaf/services/saf/amf/amfd/sg_nored_fsm.cc
+++ b/osaf/services/saf/amf/amfd/sg_nored_fsm.cc
@@ -94,7 +94,10 @@ AVD_SU *SG_NORED::assign_sis_to_sus() {
}
TRACE_LEAVE();
- return su_oper_list.su;
+ if (su_oper_list.empty() == false)
+ return su_oper_list.front();
+ else
+ return NULL;
}
uint32_t SG_NORED::si_assign(AVD_CL_CB *cb, AVD_SI *si) {
@@ -202,8 +205,7 @@ uint32_t SG_NORED::su_fault(AVD_CL_CB *c
break; /* case AVD_SG_FSM_SG_REALIGN: */
case AVD_SG_FSM_SU_OPER:
-
- if (su->sg_of_su->su_oper_list.su == su) {
+ if (su_oper_list_front() == su) {
/* The SU is same as the SU in the list. If the SI
relationships to
* the SU is quiescing change the SU admin to LOCK.
* Send D2N-INFO_SU_SI_ASSIGN modify quiesced.
@@ -337,8 +339,9 @@ uint32_t SG_NORED::susi_success(AVD_CL_C
AVD_AVND *su_node_ptr = NULL;
TRACE_ENTER2("%u", su->sg_of_su->sg_fsm_state);
+ osafassert(su->sg_of_su == this);
- switch (su->sg_of_su->sg_fsm_state) {
+ switch (sg_fsm_state) {
case AVD_SG_FSM_STABLE:
/* Do the action specified in the message if delete else no
action. */
if (act == AVSV_SUSI_ACT_DEL) {
@@ -368,18 +371,18 @@ uint32_t SG_NORED::susi_success(AVD_CL_C
/* Unassign the SUSI */
m_AVD_SU_SI_TRG_DEL(cb, su->list_of_susi);
- if (su->sg_of_su->admin_si == l_si) {
+ if (admin_si == l_si) {
m_AVD_CLEAR_SG_ADMIN_SI(cb, (su->sg_of_su));
} else {
su_oper_list_del(su);
}
- if ((su->sg_of_su->admin_si == AVD_SI_NULL) &&
(su->sg_of_su->su_oper_list.su == NULL)) {
+ if ((admin_si == AVD_SI_NULL) && (su_oper_list.empty()
== true)) {
if (assign_sis_to_sus() == NULL) {
/* No New assignments are been done in
the SG */
set_fsm_state(AVD_SG_FSM_STABLE);
- avd_sidep_sg_take_action(su->sg_of_su);
- avd_sg_app_su_inst_func(cb,
su->sg_of_su);
+ avd_sidep_sg_take_action(this);
+ avd_sg_app_su_inst_func(cb, this);
}
}
@@ -418,12 +421,12 @@ uint32_t SG_NORED::susi_success(AVD_CL_C
su_oper_list_del(su);
- if (su->sg_of_su->su_oper_list.su == NULL) {
+ if (su_oper_list.empty() == true) {
if (assign_sis_to_sus() == NULL) {
/* No New assignments are been done in
the SG */
set_fsm_state(AVD_SG_FSM_STABLE);
- avd_sidep_sg_take_action(su->sg_of_su);
- avd_sg_app_su_inst_func(cb,
su->sg_of_su);
+ avd_sidep_sg_take_action(this);
+ avd_sg_app_su_inst_func(cb, this);
}
}
}
@@ -448,7 +451,7 @@ uint32_t SG_NORED::susi_success(AVD_CL_C
su_oper_list_del(su);
- if (su->sg_of_su->su_oper_list.su == NULL) {
+ if (su->sg_of_su->su_oper_list.empty() == true) {
if (assign_sis_to_sus() != NULL) {
/* New assignments are been done in the
SG. */
set_fsm_state(AVD_SG_FSM_SG_REALIGN);
@@ -467,11 +470,10 @@ uint32_t SG_NORED::susi_success(AVD_CL_C
* Send a D2N-INFO_SU_SI_ASSIGN with remove to the SU.
Change to
* SG_realign state.
*/
-
if (avd_susi_del_send(su->list_of_susi) ==
NCSCC_RC_FAILURE)
return NCSCC_RC_FAILURE;
- if (su->sg_of_su->su_oper_list.su != su) {
+ if (su_oper_list_front() != su) {
LOG_EM("%s:%u: %s (%u)", __FILE__, __LINE__,
su->name.value, su->name.length);
LOG_EM("%s:%u: %s (%u)", __FILE__, __LINE__,
su->list_of_susi->si->name.value,
su->list_of_susi->si->name.length);
@@ -577,14 +579,14 @@ uint32_t SG_NORED::susi_success(AVD_CL_C
su_oper_list_del(su);
- if (su->sg_of_su->su_oper_list.su == NULL) {
- avd_sg_admin_state_set(su->sg_of_su,
SA_AMF_ADMIN_LOCKED);
+ if (su_oper_list.empty() == true) {
+ avd_sg_admin_state_set(this,
SA_AMF_ADMIN_LOCKED);
set_fsm_state(AVD_SG_FSM_STABLE);
/*As sg is stable, screen for si dependencies
and take action on whole sg*/
-
avd_sidep_update_si_dep_state_for_all_sis(su->sg_of_su);
- avd_sidep_sg_take_action(su->sg_of_su);
- avd_sg_app_su_inst_func(cb, su->sg_of_su);
+ avd_sidep_update_si_dep_state_for_all_sis(this);
+ avd_sidep_sg_take_action(this);
+ avd_sg_app_su_inst_func(cb, this);
}
} /* if (act == AVSV_SUSI_ACT_DEL) */
@@ -841,12 +843,12 @@ void SG_NORED::node_fail(AVD_CL_CB *cb,
}
}
- if ((su->sg_of_su->admin_si == AVD_SI_NULL) &&
(su->sg_of_su->su_oper_list.su == NULL)) {
+ if ((admin_si == AVD_SI_NULL) && (su_oper_list.empty() ==
true)) {
if (assign_sis_to_sus() == NULL) {
/* No New assignments are been done in the SG */
set_fsm_state(AVD_SG_FSM_STABLE);
- avd_sidep_sg_take_action(su->sg_of_su);
- avd_sg_app_su_inst_func(cb, su->sg_of_su);
+ avd_sidep_sg_take_action(this);
+ avd_sg_app_su_inst_func(cb, this);
}
}
@@ -867,7 +869,7 @@ void SG_NORED::node_fail(AVD_CL_CB *cb,
/* Unassign the SUSI */
m_AVD_SU_SI_TRG_DEL(cb, su->list_of_susi);
- if (su->sg_of_su->su_oper_list.su == su) {
+ if (su_oper_list_front() == su) {
su_oper_list_del(su);
su_node_ptr = su->get_node_ptr();
@@ -943,13 +945,13 @@ void SG_NORED::node_fail(AVD_CL_CB *cb,
su_oper_list_del(su);
- if (su->sg_of_su->su_oper_list.su == NULL) {
- avd_sg_admin_state_set(su->sg_of_su,
SA_AMF_ADMIN_LOCKED);
+ if (su_oper_list.empty() == true) {
+ avd_sg_admin_state_set(this, SA_AMF_ADMIN_LOCKED);
set_fsm_state(AVD_SG_FSM_STABLE);
/*As sg is stable, screen for si dependencies and take
action on whole sg*/
- avd_sidep_update_si_dep_state_for_all_sis(su->sg_of_su);
- avd_sidep_sg_take_action(su->sg_of_su);
- avd_sg_app_su_inst_func(cb, su->sg_of_su);
+ avd_sidep_update_si_dep_state_for_all_sis(this);
+ avd_sidep_sg_take_action(this);
+ avd_sg_app_su_inst_func(cb, this);
}
break; /* case AVD_SG_FSM_SG_ADMIN: */
@@ -995,7 +997,7 @@ uint32_t SG_NORED::su_admin_down(AVD_CL_
((avnd != AVD_AVND_NULL) &&
(avnd->su_admin_state == NCS_ADMIN_STATE_SHUTDOWN))) */
break; /* case AVD_SG_FSM_STABLE: */
case AVD_SG_FSM_SU_OPER:
- if ((su->sg_of_su->su_oper_list.su == su) &&
+ if ((su_oper_list_front() == su) &&
(su->list_of_susi->state == SA_AMF_HA_QUIESCING) &&
((su->saAmfSUAdminState == SA_AMF_ADMIN_LOCKED) ||
((avnd != NULL) && (avnd->saAmfNodeAdminState ==
SA_AMF_ADMIN_LOCKED)))) {
@@ -1076,7 +1078,6 @@ uint32_t SG_NORED::si_admin_down(AVD_CL_
uint32_t SG_NORED::sg_admin_down(AVD_CL_CB *cb, AVD_SG *sg) {
AVD_SU *i_su;
- AVD_SG_OPER *l_suopr;
TRACE_ENTER2("%u", sg->sg_fsm_state);
@@ -1127,7 +1128,7 @@ uint32_t SG_NORED::sg_admin_down(AVD_CL_
return NCSCC_RC_FAILURE;
}
- if (sg->su_oper_list.su != NULL) {
+ if (su_oper_list.empty() == false) {
set_fsm_state(AVD_SG_FSM_SG_ADMIN);
}
@@ -1138,24 +1139,13 @@ uint32_t SG_NORED::sg_admin_down(AVD_CL_
* SG to lock and send D2N-INFO_SU_SI_ASSIGN modify
quiesced message
* to all the SUs in the SU operation list with
quiescing assignment.
*/
- if (sg->su_oper_list.su != NULL) {
- i_su = sg->su_oper_list.su;
+
+ for (const auto& i_su : su_oper_list) {
if ((i_su->list_of_susi->state ==
SA_AMF_HA_QUIESCING) &&
(i_su->list_of_susi->fsm ==
AVD_SU_SI_STATE_MODIFY)) {
avd_susi_mod_send(i_su->list_of_susi,
SA_AMF_HA_QUIESCED);
}
-
- l_suopr = i_su->sg_of_su->su_oper_list.next;
- while (l_suopr != NULL) {
- if ((l_suopr->su->list_of_susi->state
== SA_AMF_HA_QUIESCING) &&
- (l_suopr->su->list_of_susi->fsm ==
AVD_SU_SI_STATE_MODIFY)) {
-
avd_susi_mod_send(l_suopr->su->list_of_susi, SA_AMF_HA_QUIESCED);
- }
-
- l_suopr = l_suopr->next;
- }
}
-
} /* if (sg->admin_state == NCS_ADMIN_STATE_LOCK)
*/
break; /* case AVD_SG_FSM_SG_ADMIN: */
default:
------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel