Please keep the trace.
- 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);
> -----Original Message-----
> From: Hans Feldt [mailto:[email protected]]
> Sent: 30 April 2014 10:31
> To: Nagendra Kumar; Praveen Malviya; [email protected]
> Cc: [email protected]
> Subject: [PATCH 2 of 7] amfd: add and use set_su_failover [#713]
>
> 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
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel