osaf/services/saf/amf/amfnd/compdb.cc           |  55 +++++++++++++-----------
 osaf/services/saf/amf/amfnd/include/avnd_comp.h |   2 +-
 osaf/services/saf/amf/amfnd/proxydb.cc          |   1 +
 3 files changed, 31 insertions(+), 27 deletions(-)


Use a pointer to std::bitset instead to remain POD.

diff --git a/osaf/services/saf/amf/amfnd/compdb.cc 
b/osaf/services/saf/amf/amfnd/compdb.cc
--- a/osaf/services/saf/amf/amfnd/compdb.cc
+++ b/osaf/services/saf/amf/amfnd/compdb.cc
@@ -256,6 +256,7 @@ AVND_COMP *avnd_compdb_rec_add(AVND_CB *
 
        /* a fresh comp... */
        comp = new AVND_COMP();
+       comp->use_comptype_attr = new std::bitset<NumAttrs>;
        
        /*
         * Update the config parameters.
@@ -918,23 +919,23 @@ uint32_t avnd_comptype_oper_req(AVND_CB 
                                case saAmfCtDefCallbackTimeout_ID: {
                                        SaTimeT saAmfCtDefCallbackTimeout = 
*((SaTimeT *) param->value);
                                        osafassert(sizeof(SaTimeT) == 
param->value_len);
-                                       if 
(comp->use_comptype_attr.test(PxiedInstCallbackTimeout)) {
+                                       if 
(comp->use_comptype_attr->test(PxiedInstCallbackTimeout)) {
                                                comp->pxied_inst_cbk_timeout = 
saAmfCtDefCallbackTimeout;
                                                
TRACE("comp->pxied_inst_cbk_timeout modified to '%llu'", 
comp->pxied_inst_cbk_timeout);
                                        }
-                                       if 
(comp->use_comptype_attr.test(TerminateCallbackTimeout)) {
+                                       if 
(comp->use_comptype_attr->test(TerminateCallbackTimeout)) {
                                                comp->term_cbk_timeout = 
saAmfCtDefCallbackTimeout;
                                                TRACE("comp->term_cbk_timeout 
modified to '%llu'", comp->term_cbk_timeout);
                                        }
-                                       if 
(comp->use_comptype_attr.test(PxiedCleanupCallbackTimeout)) {
+                                       if 
(comp->use_comptype_attr->test(PxiedCleanupCallbackTimeout)) {
                                                comp->pxied_clean_cbk_timeout = 
saAmfCtDefCallbackTimeout;
                                                
TRACE("comp->pxied_clean_cbk_timeout modified to '%llu'", 
comp->pxied_clean_cbk_timeout);                                               
                                        }
-                                       if 
(comp->use_comptype_attr.test(CsiSetCallbackTimeout)) {
+                                       if 
(comp->use_comptype_attr->test(CsiSetCallbackTimeout)) {
                                                comp->csi_set_cbk_timeout = 
saAmfCtDefCallbackTimeout;
                                                
TRACE("comp->csi_set_cbk_timeout modified to '%llu'", 
comp->csi_set_cbk_timeout);                                               
                                        }
-                                       if 
(comp->use_comptype_attr.test(CsiRemoveCallbackTimeout)) {
+                                       if 
(comp->use_comptype_attr->test(CsiRemoveCallbackTimeout)) {
                                                comp->csi_rmv_cbk_timeout = 
saAmfCtDefCallbackTimeout;
                                                
TRACE("comp->csi_rmv_cbk_timeout modified to '%llu'", 
comp->csi_rmv_cbk_timeout);                                               
                                        }
@@ -944,27 +945,27 @@ uint32_t avnd_comptype_oper_req(AVND_CB 
                                        AVND_COMP_CLC_CMD_PARAM *cmd;
                                        SaTimeT saAmfCtDefClcCliTimeout = 
*((SaTimeT *) param->value);
                                        osafassert(sizeof(SaTimeT) == 
param->value_len);
-                                       if 
(comp->use_comptype_attr.test(CompInstantiateTimeout)) {                        
                     
+                                       if 
(comp->use_comptype_attr->test(CompInstantiateTimeout)) {                       
                     
                                                cmd = 
&comp->clc_info.cmds[AVND_COMP_CLC_CMD_TYPE_INSTANTIATE - 1];
                                                cmd->timeout = 
saAmfCtDefClcCliTimeout;
                                                TRACE("cmd->timeout 
(Instantiate) modified to '%llu'", cmd->timeout);                               
            
                                        }
-                                       if 
(comp->use_comptype_attr.test(CompTerminateTimeout)) {                          
                     
+                                       if 
(comp->use_comptype_attr->test(CompTerminateTimeout)) {                         
                     
                                                cmd = 
&comp->clc_info.cmds[AVND_COMP_CLC_CMD_TYPE_TERMINATE - 1];
                                                cmd->timeout = 
saAmfCtDefClcCliTimeout;
                                                TRACE("cmd->timeout (Terminate) 
modified to '%llu'", cmd->timeout);                                             
                                        }
-                                       if 
(comp->use_comptype_attr.test(CompCleanupTimeout)) {                            
             
+                                       if 
(comp->use_comptype_attr->test(CompCleanupTimeout)) {                           
                     
                                                cmd = 
&comp->clc_info.cmds[AVND_COMP_CLC_CMD_TYPE_CLEANUP - 1];
                                                cmd->timeout = 
saAmfCtDefClcCliTimeout;
                                                TRACE("cmd->timeout (Cleanup) 
modified to '%llu'", cmd->timeout);                                             
  
                                        }
-                                       if 
(comp->use_comptype_attr.test(CompAmStartTimeout)) {                            
             
+                                       if 
(comp->use_comptype_attr->test(CompAmStartTimeout)) {                           
                     
                                                cmd = 
&comp->clc_info.cmds[AVND_COMP_CLC_CMD_TYPE_AMSTART - 1];
                                                cmd->timeout = 
saAmfCtDefClcCliTimeout;
                                                TRACE("cmd->timeout (AM Start) 
modified to '%llu'", cmd->timeout);                                             
 
                                        }
-                                       if 
(comp->use_comptype_attr.test(CompAmStopTimeout)) {                             
             
+                                       if 
(comp->use_comptype_attr->test(CompAmStopTimeout)) {                            
             
                                                cmd = 
&comp->clc_info.cmds[AVND_COMP_CLC_CMD_TYPE_AMSTOP - 1];
                                                cmd->timeout = 
saAmfCtDefClcCliTimeout;
                                                TRACE("cmd->timeout (AM Stop) 
modified to '%llu'", cmd->timeout);                                             
  
@@ -974,7 +975,7 @@ uint32_t avnd_comptype_oper_req(AVND_CB 
                                case saAmfCtDefQuiescingCompleteTimeout_ID: {
                                        SaTimeT 
saAmfCtDefQuiescingCompleteTimeout = *((SaTimeT *) param->value);
                                        osafassert(sizeof(SaTimeT) == 
param->value_len);
-                                       if 
(comp->use_comptype_attr.test(DefQuiescingCompleteTimeout)) {
+                                       if 
(comp->use_comptype_attr->test(DefQuiescingCompleteTimeout)) {
                                                
comp->quies_complete_cbk_timeout = saAmfCtDefQuiescingCompleteTimeout;
                                                
TRACE("comp->quies_complete_cbk_timeout modified to '%llu'", 
comp->quies_complete_cbk_timeout);
                                        }
@@ -983,7 +984,7 @@ uint32_t avnd_comptype_oper_req(AVND_CB 
                                case saAmfCtDefRecoveryOnError_ID: {
                                        SaAmfRecommendedRecoveryT 
saAmfCtDefRecoveryOnError = *((SaAmfRecommendedRecoveryT *) param->value);
                                        
osafassert(sizeof(SaAmfRecommendedRecoveryT) == param->value_len);
-                                       if 
(comp->use_comptype_attr.test(DefRecoveryOnError)) {
+                                       if 
(comp->use_comptype_attr->test(DefRecoveryOnError)) {
                                                comp->err_info.def_rec = 
saAmfCtDefRecoveryOnError;
                                                TRACE("comp->err_info.def_rec 
modified to '%u'", comp->err_info.def_rec);                                     
          
                                        }
@@ -992,7 +993,7 @@ uint32_t avnd_comptype_oper_req(AVND_CB 
                                case saAmfCtDefDisableRestart_ID: {
                                        SaBoolT saAmfCtDefDisableRestart = 
*((SaBoolT *) param->value);
                                        osafassert(sizeof(SaBoolT) == 
param->value_len);
-                                       if 
(comp->use_comptype_attr.test(DefDisableRestart)) {
+                                       if 
(comp->use_comptype_attr->test(DefDisableRestart)) {
                                                comp->is_restart_en = 
(saAmfCtDefDisableRestart == true) ? false : true;
                                                TRACE("comp->is_restart_en 
modified to '%u'", comp->is_restart_en);
                                        }
@@ -1407,8 +1408,8 @@ static void init_clc_cli_attributes(AVND
                        attributes, 0, &cmd->timeout) != SA_AIS_OK) {
                cmd->timeout = comptype->saAmfCtDefClcCliTimeout;
                comp->pxied_inst_cbk_timeout = 
comptype->saAmfCtDefCallbackTimeout;
-               comp->use_comptype_attr.set(PxiedInstCallbackTimeout);
-               comp->use_comptype_attr.set(CompInstantiateTimeout);
+               comp->use_comptype_attr->set(PxiedInstCallbackTimeout);
+               comp->use_comptype_attr->set(CompInstantiateTimeout);
        } else {
                comp->pxied_inst_cbk_timeout = cmd->timeout;
        }
@@ -1425,8 +1426,8 @@ static void init_clc_cli_attributes(AVND
                if (m_AVND_COMP_TYPE_IS_PREINSTANTIABLE(comp)) {
                        cmd->timeout = comptype->saAmfCtDefCallbackTimeout;
                        comp->term_cbk_timeout = cmd->timeout;
-                       comp->use_comptype_attr.set(TerminateCallbackTimeout);
-                       comp->use_comptype_attr.set(CompTerminateTimeout);
+                       comp->use_comptype_attr->set(TerminateCallbackTimeout);
+                       comp->use_comptype_attr->set(CompTerminateTimeout);
                }
                else
                        cmd->timeout = comptype->saAmfCtDefClcCliTimeout;
@@ -1443,8 +1444,8 @@ static void init_clc_cli_attributes(AVND
                        attributes, 0, &cmd->timeout) != SA_AIS_OK) {
                cmd->timeout = comptype->saAmfCtDefClcCliTimeout;
                comp->pxied_clean_cbk_timeout = 
comptype->saAmfCtDefCallbackTimeout;
-               comp->use_comptype_attr.set(PxiedCleanupCallbackTimeout);
-               comp->use_comptype_attr.set(CompCleanupTimeout);
+               comp->use_comptype_attr->set(PxiedCleanupCallbackTimeout);
+               comp->use_comptype_attr->set(CompCleanupTimeout);
        } else {
                comp->pxied_clean_cbk_timeout = cmd->timeout;
        }
@@ -1460,7 +1461,7 @@ static void init_clc_cli_attributes(AVND
        if 
(immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfCompAmStartTimeout"),
                        attributes, 0, &cmd->timeout) != SA_AIS_OK) {
                cmd->timeout = comptype->saAmfCtDefClcCliTimeout;
-               comp->use_comptype_attr.set(CompAmStartTimeout);
+               comp->use_comptype_attr->set(CompAmStartTimeout);
        }
 
        cmd = &comp->clc_info.cmds[AVND_COMP_CLC_CMD_TYPE_AMSTOP - 1];
@@ -1473,7 +1474,7 @@ static void init_clc_cli_attributes(AVND
        if 
(immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfCompAmStopTimeout"),
                        attributes, 0, &cmd->timeout) != SA_AIS_OK) {
                cmd->timeout = comptype->saAmfCtDefClcCliTimeout;
-               comp->use_comptype_attr.set(CompAmStopTimeout);
+               comp->use_comptype_attr->set(CompAmStopTimeout);
        }
 
        cmd = &comp->clc_info.cmds[AVND_COMP_CLC_CMD_TYPE_HC - 1];
@@ -1557,22 +1558,22 @@ static int comp_init(AVND_COMP *comp, co
        if 
(immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfCompCSISetCallbackTimeout"), 
attributes,
                            0, &comp->csi_set_cbk_timeout) != SA_AIS_OK)
                comp->csi_set_cbk_timeout = comptype->saAmfCtDefCallbackTimeout;
-               comp->use_comptype_attr.set(CsiSetCallbackTimeout);
+               comp->use_comptype_attr->set(CsiSetCallbackTimeout);
 
        if 
(immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfCompCSIRmvCallbackTimeout"), 
attributes,
                            0, &comp->csi_rmv_cbk_timeout) != SA_AIS_OK)
                comp->csi_rmv_cbk_timeout = comptype->saAmfCtDefCallbackTimeout;
-               comp->use_comptype_attr.set(CsiRemoveCallbackTimeout);
+               comp->use_comptype_attr->set(CsiRemoveCallbackTimeout);
 
        if 
(immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfCompQuiescingCompleteTimeout"),
 attributes,
                            0, &comp->quies_complete_cbk_timeout) != SA_AIS_OK) 
{
                comp->quies_complete_cbk_timeout = 
comptype->saAmfCompQuiescingCompleteTimeout;
-               comp->use_comptype_attr.set(DefQuiescingCompleteTimeout);
+               comp->use_comptype_attr->set(DefQuiescingCompleteTimeout);
        }
 
        if 
(immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfCompRecoveryOnError"), 
attributes, 0, &comp->err_info.def_rec) != SA_AIS_OK) {
                comp->err_info.def_rec = comptype->saAmfCtDefRecoveryOnError;
-               comp->use_comptype_attr.set(DefRecoveryOnError);
+               comp->use_comptype_attr->set(DefRecoveryOnError);
        } else {
                if ((SaAmfRecommendedRecoveryT)comp->err_info.def_rec == 
SA_AMF_NO_RECOMMENDATION) {
                        comp->err_info.def_rec = SA_AMF_COMPONENT_FAILOVER;
@@ -1583,7 +1584,7 @@ static int comp_init(AVND_COMP *comp, co
 
        if 
(immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfCompDisableRestart"), 
attributes, 0, &disable_restart) != SA_AIS_OK) {
                disable_restart = comptype->saAmfCtDefDisableRestart;
-               comp->use_comptype_attr.set(DefDisableRestart);
+               comp->use_comptype_attr->set(DefDisableRestart);
        }
 
        comp->is_restart_en = (disable_restart == true) ? false : true;
@@ -1671,6 +1672,7 @@ void avnd_comp_delete(AVND_COMP *comp)
                delete [] comp->saAmfCompCmdEnv;
         }
 
+       delete comp->use_comptype_attr;
         delete comp;
        return;
 }
@@ -1694,6 +1696,7 @@ static AVND_COMP *avnd_comp_create(const
        TRACE_ENTER2("%s", comp_name->value);
 
        comp = new AVND_COMP();
+       comp->use_comptype_attr = new std::bitset<NumAttrs>;
 
        memcpy(&comp->name, comp_name, sizeof(comp->name));
        comp->name.length = comp_name->length;
diff --git a/osaf/services/saf/amf/amfnd/include/avnd_comp.h 
b/osaf/services/saf/amf/amfnd/include/avnd_comp.h
--- a/osaf/services/saf/amf/amfnd/include/avnd_comp.h
+++ b/osaf/services/saf/amf/amfnd/include/avnd_comp.h
@@ -383,7 +383,7 @@ typedef struct avnd_comp_tag {
        bool error_report_sent; /* true when error is repoted on component 
using 
                                   saAmfComponentErrorReport() or 
saAmfComponentErrorReport_4()*/ 
 
-       std::bitset<NumAttrs> use_comptype_attr;
+       std::bitset<NumAttrs> *use_comptype_attr;
 
 } AVND_COMP;
 
diff --git a/osaf/services/saf/amf/amfnd/proxydb.cc 
b/osaf/services/saf/amf/amfnd/proxydb.cc
--- a/osaf/services/saf/amf/amfnd/proxydb.cc
+++ b/osaf/services/saf/amf/amfnd/proxydb.cc
@@ -235,6 +235,7 @@ AVND_COMP *avnd_internode_comp_add(NCS_P
 
        /* a fresh comp... */
        comp = new AVND_COMP();
+       comp->use_comptype_attr = new std::bitset<NumAttrs>;
 
        /* update the comp-name (patricia key) */
        memcpy(&comp->name, name, sizeof(SaNameT));

------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to