1.      Can we move all the initialization in default constructor and fill dn 
name after words.
2.      Other pointers are not necessary to initialize, any specific reason for 
doing it? 

Thanks
-Nagu

> -----Original Message-----
> From: Hans Feldt [mailto:osafde...@gmail.com]
> Sent: 30 April 2014 10:31
> To: Nagendra Kumar; Praveen Malviya; hans.nordeb...@ericsson.com
> Cc: opensaf-devel@lists.sourceforge.net
> Subject: [PATCH 4 of 7] amfd: add SU constr/destr [#713]
> 
>  osaf/services/saf/amf/amfd/include/su.h |  17 +------
>  osaf/services/saf/amf/amfd/su.cc        |  74 
> +++++++++++++++-----------------
>  2 files changed, 37 insertions(+), 54 deletions(-)
> 
> 
> 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
> @@ -92,6 +92,9 @@ class AVD_SU {
>       struct avd_sutype *su_type;
>       AVD_SU *su_list_su_type_next;
> 
> +     AVD_SU() {};
> +     AVD_SU(const SaNameT *dn);
> +     ~AVD_SU();
>       void set_su_failover(bool value);
>       void dec_curr_stdby_si(void);
>       void inc_curr_stdby_si(void);
> @@ -146,20 +149,6 @@ m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(cb, su,
>   else su_node_ptr = i_su->su_on_node;
> 
>  /**
> - * Allocate SU memory and initialize attributes to defaults
> - * @param dn
> - *
> - * @return AVD_SU*
> - */
> -extern AVD_SU *avd_su_new(const SaNameT *dn);
> -
> -/**
> - * Free SU memory
> - * @param su
> - */
> -extern void avd_su_delete(AVD_SU *su);
> -
> -/**
>   * Get SUs from IMM and create internal objects
>   *
>   * @return SaAisErrorT
> 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
> @@ -31,51 +31,46 @@
> 
>  AmfDb<AVD_SU> *su_db = NULL;
> 
> -AVD_SU *avd_su_new(const SaNameT *dn)
> -{
> -     SaNameT sg_name;
> -     AVD_SU *su;
> -
> -     su = new AVD_SU();
> -
> -     memcpy(su->name.value, dn->value, dn->length);
> -     su->name.length = dn->length;
> -     avsv_sanamet_init(dn, &sg_name, "safSg");
> -     su->saAmfSUFailover = false;
> -     su->term_state = false;
> -     su->su_switch = AVSV_SI_TOGGLE_STABLE;
> -     su->saAmfSUPreInstantiable = static_cast<SaBoolT>(false);
> -     /* saAmfSUOperState is set when the SU is added to model depending
> on
> -      * node state. Initialized to invalid due to filtering in
> avd_su_oper_state_set. */
> -     su->saAmfSUOperState = static_cast<SaAmfOperationalStateT>(0);
> -     su->saAmfSUPresenceState = SA_AMF_PRESENCE_UNINSTANTIATED;
> -     su->saAmfSuReadinessState = SA_AMF_READINESS_OUT_OF_SERVICE;
> -     su->su_is_external = false;
> -
> -     return su;
> +AVD_SU::AVD_SU(const SaNameT *dn) {
> +     memcpy(name.value, dn->value, sizeof(name.value));
> +     name.length = dn->length;
> +     saAmfSUFailover = false;
> +     term_state = false;
> +     su_switch = AVSV_SI_TOGGLE_STABLE;
> +     saAmfSUPreInstantiable = static_cast<SaBoolT>(false);
> +     saAmfSUOperState = SA_AMF_OPERATIONAL_DISABLED;
> +     saAmfSUPresenceState = SA_AMF_PRESENCE_UNINSTANTIATED;
> +     saAmfSuReadinessState = SA_AMF_READINESS_OUT_OF_SERVICE;
> +     su_is_external = false;
> +     sg_of_su = NULL;
> +     su_on_node = NULL;
> +     list_of_susi = NULL;
> +     list_of_comp = NULL;
> +     sg_list_su_next = NULL;
> +     avnd_list_su_next = NULL;
> +     su_type = NULL;
> +     su_list_su_type_next = NULL;
> +     saAmfSUHostedByNode.length = 0;
>  }
> 
>  /**
>   * Delete the SU from the model. Check point with peer. Send delete order
>   * to node director. Delete all contained components.
> - *
> - * @param i_su
>   */
> -void avd_su_delete(AVD_SU *su)
> -{
> -     TRACE_ENTER2("'%s'", su->name.value);
> +AVD_SU::~AVD_SU() {
> +     TRACE_ENTER2("'%s'", name.value);
> 
>       /* All the components under this SU should have been deleted
>        * by now, just do the sanity check to confirm it is done
>        */
> -     osafassert(su->list_of_comp == NULL);
> +     osafassert(list_of_comp == NULL);
> +     osafassert(list_of_susi == NULL);
> 
> -     m_AVSV_SEND_CKPT_UPDT_ASYNC_RMV(avd_cb, su,
> AVSV_CKPT_AVD_SU_CONFIG);
> -     avd_node_remove_su(su);
> -     avd_sutype_remove_su(su);
> -     su_db->erase(su);
> -     avd_sg_remove_su(su);
> -     delete su;
> +     m_AVSV_SEND_CKPT_UPDT_ASYNC_RMV(avd_cb, this,
> AVSV_CKPT_AVD_SU_CONFIG);
> +     avd_node_remove_su(this);
> +     avd_sutype_remove_su(this);
> +     su_db->erase(this);
> +     avd_sg_remove_su(this);
> 
>       TRACE_LEAVE();
>  }
> @@ -93,8 +88,7 @@ AVD_SU *avd_su_get_or_create(const SaNam
> 
>       if (su == NULL) {
>               TRACE("'%s' does not exist, creating it", dn->value);
> -             su = avd_su_new(dn);
> -             osafassert(su != NULL);
> +             su = new AVD_SU(dn);
>               unsigned int rc = su_db->insert(su);
>               osafassert(rc == NCSCC_RC_SUCCESS);
>       }
> @@ -420,8 +414,7 @@ static AVD_SU *su_create(const SaNameT *
>       ** but needs to get configuration attributes initialized.
>       */
>       if ((su = su_db->find(dn)) == NULL) {
> -             if ((su = avd_su_new(dn)) == NULL)
> -                     goto done;
> +             su = new AVD_SU(dn);
>       } else
>               TRACE("already created, refreshing config...");
> 
> @@ -1489,7 +1482,7 @@ static void su_ccb_apply_delete_hdlr(str
>       TRACE_ENTER2("'%s'", su->name.value);
> 
>       if (avd_cb->avail_state_avd != SA_AMF_HA_ACTIVE) {
> -             avd_su_delete(su);
> +             delete su;
>               goto done;
>       }
> 
> @@ -1505,7 +1498,8 @@ static void su_ccb_apply_delete_hdlr(str
>               avd_snd_op_req_msg(avd_cb, su_node_ptr, &param);
>       }
> 
> -     avd_su_delete(su);
> +     delete su;
> +
>       if (AVD_SG_FSM_STABLE == sg->sg_fsm_state) {
>               /*if su of uneqal rank has been delete and all SUs are of same
> rank then do screening
>                 for SI Distribution. */

------------------------------------------------------------------------------
"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