ack/Regards HansN On 06/11/14 07:37, Gary Lee wrote: > osaf/services/saf/amf/amfd/include/si.h | 1 + > osaf/services/saf/amf/amfd/si.cc | 88 > ++++++++++++++++---------------- > 2 files changed, 44 insertions(+), 45 deletions(-) > > > 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 > @@ -118,6 +118,7 @@ public: > void inc_curr_act_dec_std_ass(); > > void adjust_si_assignments(uint32_t mod_pref_assignments); > + void update_ass_state(); > > private: > AVD_SI(const AVD_SI&); > 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 > @@ -30,7 +30,6 @@ > AmfDb<std::string, AVD_SI> *si_db = NULL; > > static void avd_si_add_csi_db(struct avd_csi_tag* csi); > -static void si_update_ass_state(AVD_SI *si); > > /** > * @brief Checks if the dependencies configured leads to loop > @@ -1025,7 +1024,7 @@ void AVD_SI::adjust_si_assignments(const > /* No New assignments are been done in the SG > reason might be no more inservice SUs to > take new assignments or > SUs are already assigned to > saAmfSGMaxActiveSIsperSU capacity */ > - si_update_ass_state(this); > + update_ass_state(); > TRACE("No New assignments are been done SI:%s", > name.value); > } > } else { > @@ -1139,7 +1138,7 @@ static void si_ccb_apply_modify_hdlr(Ccb > si->saAmfSIPrefActiveAssignments = > mod_pref_assignments; > } > TRACE("Modified saAmfSIPrefActiveAssignments is '%u'", > si->saAmfSIPrefActiveAssignments); > - si_update_ass_state(si); > + si->update_ass_state(); > } else if (!strcmp(attribute->attrName, > "saAmfSIPrefStandbyAssignments")) { > if (value_is_deleted) > mod_pref_assignments = > si->saAmfSIPrefStandbyAssignments = 1; > @@ -1165,7 +1164,7 @@ static void si_ccb_apply_modify_hdlr(Ccb > si->saAmfSIPrefStandbyAssignments = > mod_pref_assignments; > } > TRACE("Modified saAmfSINumCurrStandbyAssignments is > '%u'", si->saAmfSINumCurrStandbyAssignments); > - si_update_ass_state(si); > + si->update_ass_state(); > } else { > osafassert(0); > } > @@ -1202,11 +1201,10 @@ static void si_ccb_apply_cb(CcbUtilOpera > /** > * Update the SI assignment state. See table 11 p.88 in AMF B.04 > * IMM is updated aswell as the standby peer. > - * @param si > */ > -static void si_update_ass_state(AVD_SI *si) > +void AVD_SI::update_ass_state() > { > - SaAmfAssignmentStateT oldState = si->saAmfSIAssignmentState; > + const SaAmfAssignmentStateT oldState = saAmfSIAssignmentState; > SaAmfAssignmentStateT newState = SA_AMF_ASSIGNMENT_UNASSIGNED; > > /* > @@ -1215,48 +1213,48 @@ static void si_update_ass_state(AVD_SI * > ** osafassert(si->saAmfSINumCurrActiveAssignments == 1); > ** since AMF temporarily goes above the limit during fail over > */ > - switch (si->sg_of_si->sg_type->saAmfSgtRedundancyModel) { > + switch (sg_of_si->sg_type->saAmfSgtRedundancyModel) { > case SA_AMF_2N_REDUNDANCY_MODEL: > /* fall through */ > case SA_AMF_NPM_REDUNDANCY_MODEL: > - if ((si->saAmfSINumCurrActiveAssignments == 0) && > - (si->saAmfSINumCurrStandbyAssignments == 0)) { > + if ((saAmfSINumCurrActiveAssignments == 0) && > + (saAmfSINumCurrStandbyAssignments == 0)) { > newState = SA_AMF_ASSIGNMENT_UNASSIGNED; > - } else if ((si->saAmfSINumCurrActiveAssignments == 1) && > - (si->saAmfSINumCurrStandbyAssignments == 1)) { > + } else if ((saAmfSINumCurrActiveAssignments == 1) && > + (saAmfSINumCurrStandbyAssignments == 1)) { > newState = SA_AMF_ASSIGNMENT_FULLY_ASSIGNED; > } else > newState = SA_AMF_ASSIGNMENT_PARTIALLY_ASSIGNED; > > break; > case SA_AMF_N_WAY_REDUNDANCY_MODEL: > - if ((si->saAmfSINumCurrActiveAssignments == 0) && > - (si->saAmfSINumCurrStandbyAssignments == 0)) { > + if ((saAmfSINumCurrActiveAssignments == 0) && > + (saAmfSINumCurrStandbyAssignments == 0)) { > newState = SA_AMF_ASSIGNMENT_UNASSIGNED; > - } else if ((si->saAmfSINumCurrActiveAssignments == 1) && > - (si->saAmfSINumCurrStandbyAssignments == > si->saAmfSIPrefStandbyAssignments)) { > + } else if ((saAmfSINumCurrActiveAssignments == 1) && > + (saAmfSINumCurrStandbyAssignments == > saAmfSIPrefStandbyAssignments)) { > newState = SA_AMF_ASSIGNMENT_FULLY_ASSIGNED; > } else > newState = SA_AMF_ASSIGNMENT_PARTIALLY_ASSIGNED; > break; > case SA_AMF_N_WAY_ACTIVE_REDUNDANCY_MODEL: > - if (si->saAmfSINumCurrActiveAssignments == 0) { > + if (saAmfSINumCurrActiveAssignments == 0) { > newState = SA_AMF_ASSIGNMENT_UNASSIGNED; > } else { > - osafassert(si->saAmfSINumCurrStandbyAssignments == 0); > - osafassert(si->saAmfSINumCurrActiveAssignments <= > si->saAmfSIPrefActiveAssignments); > - if (si->saAmfSINumCurrActiveAssignments == > si->saAmfSIPrefActiveAssignments) > + osafassert(saAmfSINumCurrStandbyAssignments == 0); > + osafassert(saAmfSINumCurrActiveAssignments <= > saAmfSIPrefActiveAssignments); > + if (saAmfSINumCurrActiveAssignments == > saAmfSIPrefActiveAssignments) > newState = SA_AMF_ASSIGNMENT_FULLY_ASSIGNED; > else > newState = SA_AMF_ASSIGNMENT_PARTIALLY_ASSIGNED; > } > break; > case SA_AMF_NO_REDUNDANCY_MODEL: > - if (si->saAmfSINumCurrActiveAssignments == 0) { > + if (saAmfSINumCurrActiveAssignments == 0) { > newState = SA_AMF_ASSIGNMENT_UNASSIGNED; > } else { > - osafassert(si->saAmfSINumCurrActiveAssignments == 1); > - osafassert(si->saAmfSINumCurrStandbyAssignments == 0); > + osafassert(saAmfSINumCurrActiveAssignments == 1); > + osafassert(saAmfSINumCurrStandbyAssignments == 0); > newState = SA_AMF_ASSIGNMENT_FULLY_ASSIGNED; > } > break; > @@ -1264,38 +1262,38 @@ static void si_update_ass_state(AVD_SI * > osafassert(0); > } > > - if (newState != si->saAmfSIAssignmentState) { > - TRACE("'%s' %s => %s", si->name.value, > - avd_ass_state[si->saAmfSIAssignmentState], > avd_ass_state[newState]); > + if (newState != saAmfSIAssignmentState) { > + TRACE("'%s' %s => %s", name.value, > + avd_ass_state[saAmfSIAssignmentState], > avd_ass_state[newState]); > #if 0 > saflog(LOG_NOTICE, amfSvcUsrName, "%s AssignmentState %s => > %s", si->name.value, > avd_ass_state[si->saAmfSIAssignmentState], > avd_ass_state[newState]); > #endif > > - si->saAmfSIAssignmentState = newState; > + saAmfSIAssignmentState = newState; > > /* alarm & notifications */ > - if (si->saAmfSIAssignmentState == SA_AMF_ASSIGNMENT_UNASSIGNED) > { > - avd_send_si_unassigned_alarm(&si->name); > - si->alarm_sent = true; > - m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, si, > AVSV_CKPT_SI_ALARM_SENT); > + if (saAmfSIAssignmentState == SA_AMF_ASSIGNMENT_UNASSIGNED) { > + avd_send_si_unassigned_alarm(&name); > + alarm_sent = true; > + m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, this, > AVSV_CKPT_SI_ALARM_SENT); > } > else { > - avd_send_si_assigned_ntf(&si->name, oldState, > si->saAmfSIAssignmentState); > + avd_send_si_assigned_ntf(&name, oldState, > saAmfSIAssignmentState); > > /* Clear of alarm */ > - if ((oldState == SA_AMF_ASSIGNMENT_UNASSIGNED) && > si->alarm_sent) { > - avd_alarm_clear(&si->name, > SA_AMF_NTFID_SI_UNASSIGNED, SA_NTF_SOFTWARE_ERROR); > - m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, si, > AVSV_CKPT_SI_ALARM_SENT); > + if ((oldState == SA_AMF_ASSIGNMENT_UNASSIGNED) && > alarm_sent) { > + avd_alarm_clear(&name, > SA_AMF_NTFID_SI_UNASSIGNED, SA_NTF_SOFTWARE_ERROR); > + m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, this, > AVSV_CKPT_SI_ALARM_SENT); > } > > /* always reset in case the SI has been recycled */ > - si->alarm_sent = false; > + alarm_sent = false; > } > > - avd_saImmOiRtObjectUpdate(&si->name, "saAmfSIAssignmentState", > - SA_IMM_ATTR_SAUINT32T, &si->saAmfSIAssignmentState); > - m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, si, > AVSV_CKPT_SI_ASSIGNMENT_STATE); > + avd_saImmOiRtObjectUpdate(&name, "saAmfSIAssignmentState", > + SA_IMM_ATTR_SAUINT32T, &saAmfSIAssignmentState); > + m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, this, > AVSV_CKPT_SI_ASSIGNMENT_STATE); > } > } > > @@ -1304,7 +1302,7 @@ void AVD_SI::inc_curr_act_ass() > saAmfSINumCurrActiveAssignments++; > m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, this, > AVSV_CKPT_SI_SU_CURR_ACTIVE); > TRACE("%s saAmfSINumCurrActiveAssignments=%u", name.value, > saAmfSINumCurrActiveAssignments); > - si_update_ass_state(this); > + update_ass_state(); > } > > void AVD_SI::dec_curr_act_ass() > @@ -1313,7 +1311,7 @@ void AVD_SI::dec_curr_act_ass() > saAmfSINumCurrActiveAssignments--; > TRACE("%s saAmfSINumCurrActiveAssignments=%u", name.value, > saAmfSINumCurrActiveAssignments); > m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, this, > AVSV_CKPT_SI_SU_CURR_ACTIVE); > - si_update_ass_state(this); > + update_ass_state(); > } > > void AVD_SI::inc_curr_stdby_ass() > @@ -1321,7 +1319,7 @@ void AVD_SI::inc_curr_stdby_ass() > saAmfSINumCurrStandbyAssignments++; > TRACE("%s saAmfSINumCurrStandbyAssignments=%u", name.value, > saAmfSINumCurrStandbyAssignments); > m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, this, > AVSV_CKPT_SI_SU_CURR_STBY); > - si_update_ass_state(this); > + update_ass_state(); > } > > void AVD_SI::dec_curr_stdby_ass() > @@ -1330,7 +1328,7 @@ void AVD_SI::dec_curr_stdby_ass() > saAmfSINumCurrStandbyAssignments--; > TRACE("%s saAmfSINumCurrStandbyAssignments=%u", name.value, > saAmfSINumCurrStandbyAssignments); > m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, this, > AVSV_CKPT_SI_SU_CURR_STBY); > - si_update_ass_state(this); > + update_ass_state(); > } > > void AVD_SI::inc_curr_act_dec_std_ass() > @@ -1344,7 +1342,7 @@ void AVD_SI::inc_curr_act_dec_std_ass() > TRACE("%s saAmfSINumCurrStandbyAssignments=%u", name.value, > saAmfSINumCurrStandbyAssignments); > m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, this, > AVSV_CKPT_SI_SU_CURR_STBY); > > - si_update_ass_state(this); > + update_ass_state(); > } > > void AVD_SI::inc_curr_stdby_dec_act_ass() > @@ -1358,7 +1356,7 @@ void AVD_SI::inc_curr_stdby_dec_act_ass( > TRACE("%s saAmfSINumCurrActiveAssignments=%u", name.value, > saAmfSINumCurrActiveAssignments); > m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, this, > AVSV_CKPT_SI_SU_CURR_ACTIVE); > > - si_update_ass_state(this); > + update_ass_state(); > } > > void avd_si_constructor(void)
------------------------------------------------------------------------------ HPCC Systems Open Source Big Data Platform from LexisNexis Risk Solutions Find What Matters Most in Your Big Data with HPCC Systems Open Source. Fast. Scalable. Simple. Ideal for Dirty Data. Leverages Graph Analysis for Fast Processing & Easy Data Exploration http://p.sf.net/sfu/hpccsystems _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel