osaf/services/saf/amf/amfd/comp.cc | 3 +-- osaf/services/saf/amf/amfd/include/su.h | 6 +++++- osaf/services/saf/amf/amfd/sg.cc | 3 +-- osaf/services/saf/amf/amfd/su.cc | 30 +++++++++++++++++------------- osaf/services/saf/amf/amfd/sutype.cc | 5 +---- 5 files changed, 25 insertions(+), 22 deletions(-)
diff --git a/osaf/services/saf/amf/amfd/comp.cc b/osaf/services/saf/amf/amfd/comp.cc --- a/osaf/services/saf/amf/amfd/comp.cc +++ b/osaf/services/saf/amf/amfd/comp.cc @@ -1560,8 +1560,7 @@ static void comp_ccb_apply_delete_hdlr(s SA_IMM_ATTR_SAUINT32T, &comp->su->saAmfSUPreInstantiable); /* If SU becomes NPI then enable saAmfSUFailover flag Sec 3.11.1.3.2 AMF-B.04.01 spec */ if (!comp->su->saAmfSUPreInstantiable) { - comp->su->saAmfSUFailover = true; - su_nd_attribute_update(comp->su, saAmfSUFailOver_ID); + comp->su->set_su_failover(true); } } diff --git a/osaf/services/saf/amf/amfd/include/su.h b/osaf/services/saf/amf/amfd/include/su.h --- a/osaf/services/saf/amf/amfd/include/su.h +++ b/osaf/services/saf/amf/amfd/include/su.h @@ -38,6 +38,7 @@ /** * AMF director Service Unit representation. */ +//TODO: all attributes that have a setter should probably have an getter class AVD_SU { public: SaNameT name; @@ -91,6 +92,7 @@ class AVD_SU { struct avd_sutype *su_type; AVD_SU *su_list_su_type_next; + void set_su_failover(bool value); void dec_curr_stdby_si(void); void inc_curr_stdby_si(void); void inc_curr_act_si(void); @@ -108,6 +110,9 @@ class AVD_SU { void delete_all_susis(void); void set_all_susis_assigned_quiesced(void); void set_all_susis_assigned(void); + + private: + void send_attribute_update(AVSV_AMF_SU_ATTR_ID attrib_id); }; extern AmfDb<AVD_SU> *su_db; @@ -194,6 +199,5 @@ extern SaAisErrorT avd_sutcomptype_confi extern void avd_sutcomptype_constructor(void); extern AVD_SU *avd_su_get_or_create(const SaNameT *dn); -extern void su_nd_attribute_update(const AVD_SU *su, AVSV_AMF_SU_ATTR_ID attrib_id); #endif diff --git a/osaf/services/saf/amf/amfd/sg.cc b/osaf/services/saf/amf/amfd/sg.cc --- a/osaf/services/saf/amf/amfd/sg.cc +++ b/osaf/services/saf/amf/amfd/sg.cc @@ -1564,8 +1564,7 @@ void avd_sg_adjust_config(AVD_SG *sg) /* saAmfSUFailover must be true for a NPI SU sec 3.11.1.3.2 AMF-B.04.01 spec */ for (AVD_SU *su = sg->list_of_su; su != NULL; su = su->sg_list_su_next) { if (!su->saAmfSUFailover) { - su->saAmfSUFailover = true; - su_nd_attribute_update(su, saAmfSUFailOver_ID); + su->set_su_failover(true); } } 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 @@ -1427,19 +1427,19 @@ static void su_ccb_apply_modify_hdlr(str if (!strcmp(attr_mod->modAttr.attrName, "saAmfSUFailover")) { if (value_is_deleted) { - su->saAmfSUFailover = static_cast<bool>(su->su_type->saAmfSutDefSUFailover); + su->set_su_failover(su->su_type->saAmfSutDefSUFailover); su->saAmfSUFailover_configured = false; } else { - su->saAmfSUFailover = static_cast<bool>(*((SaUint32T *)attr_mod->modAttr.attrValues[0])); + bool value = + static_cast<bool>(*((SaUint32T *)attr_mod->modAttr.attrValues[0])); + su->set_su_failover(value); su->saAmfSUFailover_configured = true; } - TRACE("Modified saAmfSUFailover is '%u'", su->saAmfSUFailover); if (!su->saAmfSUPreInstantiable) { - su->saAmfSUFailover = true; + su->set_su_failover(true); su->saAmfSUFailover_configured = true; } - su_nd_attribute_update(su, saAmfSUFailOver_ID); } else if (!strcmp(attr_mod->modAttr.attrName, "saAmfSUMaintenanceCampaign")) { if (value_is_deleted) { su->saAmfSUMaintenanceCampaign.length = 0; @@ -1460,13 +1460,12 @@ static void su_ccb_apply_modify_hdlr(str su->su_type = sut; avd_sutype_add_su(su); if (su->saAmfSUPreInstantiable) { - su->saAmfSUFailover = static_cast<bool>(sut->saAmfSutDefSUFailover); + su->set_su_failover(static_cast<bool>(sut->saAmfSutDefSUFailover)); su->saAmfSUFailover_configured = false; } else { - su->saAmfSUFailover = true; + su->set_su_failover(true); su->saAmfSUFailover_configured = true; } - su_nd_attribute_update(su, saAmfSUFailOver_ID); su->su_is_external = sut->saAmfSutIsExternal; } else osafassert(0); @@ -1601,8 +1600,7 @@ void avd_su_constructor(void) * @param su * @param attrib_id */ -void su_nd_attribute_update(const AVD_SU *su, AVSV_AMF_SU_ATTR_ID attrib_id) -{ +void AVD_SU::send_attribute_update(AVSV_AMF_SU_ATTR_ID attrib_id) { AVD_AVND *su_node_ptr = NULL; AVSV_PARAM_INFO param; memset(((uint8_t *)¶m), '\0', sizeof(AVSV_PARAM_INFO)); @@ -1613,10 +1611,10 @@ void su_nd_attribute_update(const AVD_SU TRACE_LEAVE2("avd is not in active state"); return; } - m_AVD_GET_SU_NODE_PTR(avd_cb, su, su_node_ptr); + m_AVD_GET_SU_NODE_PTR(avd_cb, this, su_node_ptr); param.class_id = AVSV_SA_AMF_SU; param.act = AVSV_OBJ_OPR_MOD; - param.name = su->name; + param.name = name; switch (attrib_id) { case saAmfSUFailOver_ID: @@ -1624,7 +1622,7 @@ void su_nd_attribute_update(const AVD_SU uint32_t sufailover; param.attr_id = saAmfSUFailOver_ID; param.value_len = sizeof(uint32_t); - sufailover = htonl(su->saAmfSUFailover); + sufailover = htonl(saAmfSUFailover); memcpy(¶m.value[0], &sufailover, param.value_len); break; } @@ -1644,6 +1642,12 @@ void su_nd_attribute_update(const AVD_SU TRACE_LEAVE(); } +void AVD_SU::set_su_failover(bool value) { + saAmfSUFailover = value; + TRACE("%s saAmfSUFailover '%u'", name.value, saAmfSUFailover); + send_attribute_update(saAmfSUFailOver_ID); +} + /** * Delete all SUSIs assigned to the SU. * 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 @@ -255,10 +255,7 @@ static void sutype_ccb_apply_modify_hdlr if (old_value != sut->saAmfSutDefSUFailover) { for (AVD_SU *su = sut->list_of_su; su; su = su->su_list_su_type_next) { if ((!su->saAmfSUFailover_configured) && (su->saAmfSUPreInstantiable)) { - su->saAmfSUFailover = static_cast<bool>(sut->saAmfSutDefSUFailover); - TRACE("Modified saAmfSutDefSUFailover to '%u' for Su'%s'", - su->saAmfSUFailover, su->name.value); - su_nd_attribute_update(su, saAmfSUFailOver_ID); + su->set_su_failover(static_cast<bool>(sut->saAmfSutDefSUFailover)); } } } ------------------------------------------------------------------------------ "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 Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel