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 *)&param), '\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(&param.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

Reply via email to