osaf/services/saf/amf/amfd/imm.cc | 281 ++++++++++++++++++-------------------
1 files changed, 138 insertions(+), 143 deletions(-)
diff --git a/osaf/services/saf/amf/amfd/imm.cc
b/osaf/services/saf/amf/amfd/imm.cc
--- a/osaf/services/saf/amf/amfd/imm.cc
+++ b/osaf/services/saf/amf/amfd/imm.cc
@@ -22,7 +22,7 @@
#include <stdio.h>
#include <errno.h>
-#include <string.h>
+#include <cstring>
#include <sys/stat.h>
#include <unistd.h>
@@ -51,6 +51,8 @@
#include "osaf_time.h"
#include <stdint.h>
+#include <unordered_map>
+#include <string>
/* ========================================================================
* DEFINITIONS
@@ -63,6 +65,57 @@
imm_reinit_mutex and then proceeds for initialization. */
static pthread_mutex_t imm_reinit_thread_startup_mutex =
PTHREAD_MUTEX_INITIALIZER;
static pthread_cond_t imm_reinit_thread_startup_cond =
PTHREAD_COND_INITIALIZER;
+
+typedef std::unordered_map<std::string, AVSV_AMF_CLASS_ID> type_map;
+
+type_map amf_type_map = {
+ /* Cluster and Node Class Related */
+ {"safAmfCluster",AVSV_SA_AMF_CLUSTER},
+ {"safAmfNode",AVSV_SA_AMF_NODE},
+ {"safAmfNodeGroup",AVSV_SA_AMF_NODE_GROUP},
+ {"safInstalledSwBundle",AVSV_SA_AMF_NODE_SW_BUNDLE},
+ /* Application Class Related */
+ {"safApp",AVSV_SA_AMF_APP},
+ {"safAppType",AVSV_SA_AMF_APP_BASE_TYPE},
+ /* Service Group Class Related */
+ {"safSg",AVSV_SA_AMF_SG},
+ {"safSgType",AVSV_SA_AMF_SG_BASE_TYPE},
+ /* Service Unit Class Related */
+ {"safSu",AVSV_SA_AMF_SU},
+ {"safSuType",AVSV_SA_AMF_SU_BASE_TYPE},
+ {"safMemberCompType",AVSV_SA_AMF_SUT_COMP_TYPE},
+ /* Service Instance Class Related */
+ {"safSi",AVSV_SA_AMF_SI},
+ {"safSvcType",AVSV_SA_AMF_SVC_BASE_TYPE},
+ {"safDepend",AVSV_SA_AMF_SI_DEPENDENCY},
+ {"safRankedSu",AVSV_SA_AMF_SI_RANKED_SU},
+ {"safSISU",AVSV_SA_AMF_SI_ASSIGNMENT},
+ {"safMemberCSType",AVSV_SA_AMF_SVC_TYPE_CS_TYPES},
+ /* Component Service Instance Class Related */
+ {"safCsi",AVSV_SA_AMF_CSI},
+ {"safCSType",AVSV_SA_AMF_CS_BASE_TYPE},
+ {"safCsiAttr",AVSV_SA_AMF_CSI_ATTRIBUTE},
+ {"safCSIComp",AVSV_SA_AMF_CSI_ASSIGNMENT},
+ /* Component and component types Related */
+ {"safCompType",AVSV_SA_AMF_COMP_BASE_TYPE},
+ {"safSupportedCsType",AVSV_SA_AMF_CLASS_INVALID},
+ {"safComp",AVSV_SA_AMF_COMP},
+ /* Global Component Attributes and Health Check Related */
+ {"safRdn",AVSV_SA_AMF_COMP_GLOBAL_ATTR},
+ {"safHealthcheckKey",AVSV_SA_AMF_CLASS_INVALID},
+ /* Common Version Related */
+ {"safVersion",AVSV_SA_AMF_CLASS_INVALID}
+};
+
+type_map versioned_types = {
+ {"safAppType",AVSV_SA_AMF_APP_TYPE},
+ {"safSgType",AVSV_SA_AMF_SG_TYPE},
+ {"safSuType",AVSV_SA_AMF_SU_TYPE},
+ {"safSvcType",AVSV_SA_AMF_SVC_TYPE},
+ {"safCSType",AVSV_SA_AMF_CS_TYPE},
+ {"safCompType",AVSV_SA_AMF_COMP_TYPE}
+};
+
//
// TODO(HANO) Temporary use this function instead of strdup which uses malloc.
// Later on remove this function and use std::string instead
@@ -86,10 +139,11 @@
SaAisErrorT rc;
AvdJobDequeueResultT res;
- TRACE_ENTER2("Create %s", parentName_.value);
+ TRACE_ENTER2("Create %s", parentName_.c_str());
+ const SaNameTWrapper parent_name(parentName_);
rc = saImmOiRtObjectCreate_2(immOiHandle, className_,
- &parentName_, attrValues_);
+ parent_name, attrValues_);
if ((rc == SA_AIS_OK) || (rc == SA_AIS_ERR_EXIST)) {
delete Fifo::dequeue();
@@ -150,7 +204,7 @@
const SaImmAttrModificationT_2 *attrMods[] = {&attrMod, nullptr};
SaImmAttrValueT attrValues[] = {value_};
- TRACE_ENTER2("Update '%s' %s", dn_.value, attributeName_);
+ TRACE_ENTER2("Update '%s' %s", dn.c_str(), attributeName_);
attrMod.modType = SA_IMM_ATTR_VALUES_REPLACE;
attrMod.modAttr.attrName = attributeName_;
@@ -158,7 +212,7 @@
attrMod.modAttr.attrValueType = attrValueType_;
attrMod.modAttr.attrValues = attrValues;
- rc = saImmOiRtObjectUpdate_2(immOiHandle, &dn_, attrMods);
+ rc = saImmOiRtObjectUpdate_o3(immOiHandle, dn.c_str(), attrMods);
if ((rc == SA_AIS_OK) || (rc == SA_AIS_ERR_NOT_EXIST)) {
delete Fifo::dequeue();
@@ -196,9 +250,9 @@
SaAisErrorT rc;
AvdJobDequeueResultT res;
- TRACE_ENTER2("Delete %s", dn_.value);
+ TRACE_ENTER2("Delete %s", dn.c_str());
- rc = saImmOiRtObjectDelete(immOiHandle, &dn_);
+ rc = saImmOiRtObjectDelete_o3(immOiHandle, dn.c_str());
if ((rc == SA_AIS_OK) || (rc == SA_AIS_ERR_NOT_EXIST)) {
delete Fifo::dequeue();
@@ -370,7 +424,7 @@
(SaImmOiImplementerNameT)"safAmfService";
static const SaImmOiImplementerNameT applierNamePrefix =
(SaImmOiImplementerNameT)"@safAmfService";
-static SaVersionT immVersion = { 'A', 2, 11 };
+static SaVersionT immVersion = { 'A', 2, 15 };
/* This string array must match the AVSV_AMF_CLASS_ID enum */
static const char *avd_class_names[] = {
@@ -456,6 +510,7 @@
valueSize = sizeof(SaTimeT);
break;
case SA_IMM_ATTR_SANAMET:
+ //@todo this needs updating to support long DN
valueSize = sizeof(SaNameT);
break;
case SA_IMM_ATTR_SAFLOATT:
@@ -535,13 +590,14 @@
return copy;
}
-static AVSV_AMF_CLASS_ID class_name_to_class_type(const char *className)
+static AVSV_AMF_CLASS_ID class_name_to_class_type(const std::string& className)
{
int i;
for (i = 0; i < AVSV_SA_AMF_CLASS_MAX; i++) {
- if (strcmp(className, avd_class_names[i]) == 0)
+ if (className.compare(avd_class_names[i]) == 0) {
return static_cast<AVSV_AMF_CLASS_ID>(i);
+ }
}
osafassert(0);
@@ -560,111 +616,49 @@
* NOTES: None.
*
**************************************************************************/
-static AVSV_AMF_CLASS_ID object_name_to_class_type(const SaNameT *obj_name)
+static AVSV_AMF_CLASS_ID object_name_to_class_type(const std::string& obj_name)
{
+ TRACE_ENTER2("%s", obj_name.c_str());
AVSV_AMF_CLASS_ID class_type = AVSV_SA_AMF_CLASS_INVALID;
- /* Cluster and Node Class Related */
- if (strncmp((char *)&obj_name->value, "safAmfCluster=", 14) == 0) {
- class_type = AVSV_SA_AMF_CLUSTER;
- } else if (strncmp((char *)&obj_name->value, "safAmfNode=", 11) == 0) {
- class_type = AVSV_SA_AMF_NODE;
- } else if (strncmp((char *)&obj_name->value, "safAmfNodeGroup=", 16) ==
0) {
- class_type = AVSV_SA_AMF_NODE_GROUP;
- } else if (strncmp((char *)&obj_name->value, "safInstalledSwBundle=",
21) == 0) {
- class_type = AVSV_SA_AMF_NODE_SW_BUNDLE;
+ const std::string::size_type first_equal = obj_name.find('=');
+ const std::string prefix(obj_name.substr(0, first_equal));
+
+ if (first_equal != std::string::npos) {
+ // prefix contains all the chars before the first comma
+ class_type = amf_type_map[prefix];
+ } else {
+ LOG_NO("unknown type: %s", obj_name.c_str());
+ osafassert(false);
}
- /* Application Class Related */
- else if (strncmp((char *)&obj_name->value, "safApp=", 7) == 0) {
- class_type = AVSV_SA_AMF_APP;
- } else if (strncmp((char *)&obj_name->value, "safAppType=", 11) == 0) {
- class_type = AVSV_SA_AMF_APP_BASE_TYPE;
- }
-
- /* Service Group Class Related */
- else if (strncmp((char *)&obj_name->value, "safSg=", 6) == 0) {
- class_type = AVSV_SA_AMF_SG;
- } else if (strncmp((char *)&obj_name->value, "safSgType=", 10) == 0) {
- class_type = AVSV_SA_AMF_SG_BASE_TYPE;
- }
-
- /* Service Unit Class Related */
- else if (strncmp((char *)&obj_name->value, "safSu=", 6) == 0) {
- class_type = AVSV_SA_AMF_SU;
- } else if (strncmp((char *)&obj_name->value, "safSuType=", 10) == 0) {
- class_type = AVSV_SA_AMF_SU_BASE_TYPE;
- } else if (strncmp((char *)&obj_name->value, "safMemberCompType=", 18)
== 0) {
- class_type = AVSV_SA_AMF_SUT_COMP_TYPE;
- }
-
- /* Service Instance Class Related */
- else if (strncmp((char *)&obj_name->value, "safSi=", 6) == 0) {
- class_type = AVSV_SA_AMF_SI;
- } else if (strncmp((char *)&obj_name->value, "safSvcType=", 11) == 0) {
- class_type = AVSV_SA_AMF_SVC_BASE_TYPE;
- } else if (strncmp((char *)&obj_name->value, "safDepend=", 10) == 0) {
- class_type = AVSV_SA_AMF_SI_DEPENDENCY;
- } else if (strncmp((char *)&obj_name->value, "safRankedSu=", 12) == 0) {
- class_type = AVSV_SA_AMF_SI_RANKED_SU;
- } else if (strncmp((char *)&obj_name->value, "safSISU=", 8) == 0) {
- class_type = AVSV_SA_AMF_SI_ASSIGNMENT;
- } else if (strncmp((char *)&obj_name->value, "safMemberCSType=", 16) ==
0) {
- class_type = AVSV_SA_AMF_SVC_TYPE_CS_TYPES;
- }
-
- /* Component Service Instance Class Related */
- else if (strncmp((char *)&obj_name->value, "safCsi=", 7) == 0) {
- class_type = AVSV_SA_AMF_CSI;
- } else if (strncmp((char *)&obj_name->value, "safCSType=", 10) == 0) {
- class_type = AVSV_SA_AMF_CS_BASE_TYPE;
- } else if (strncmp((char *)&obj_name->value, "safCsiAttr=", 11) == 0) {
- class_type = AVSV_SA_AMF_CSI_ATTRIBUTE;
- } else if (strncmp((char *)&obj_name->value, "safCSIComp=", 11) == 0) {
- class_type = AVSV_SA_AMF_CSI_ASSIGNMENT;
- }
-
- /* Component and component types Related */
- else if (strncmp((char *)&obj_name->value, "safCompType=", 12) == 0) {
- class_type = AVSV_SA_AMF_COMP_BASE_TYPE;
- } else if (strncmp((char *)&obj_name->value, "safSupportedCsType=", 19)
== 0) {
- if (strstr((char *)&obj_name->value, "safCompType=") != 0) {
- class_type = AVSV_SA_AMF_CT_CS_TYPE;
- } else if (strstr((char *)&obj_name->value, "safComp=") != 0) {
- class_type = AVSV_SA_AMF_COMP_CS_TYPE;
- }
- } else if (strncmp((char *)&obj_name->value, "safComp=", 8) == 0) {
- class_type = AVSV_SA_AMF_COMP;
- }
-
- /* Global Component Attributes and Health Check Related */
- else if (strncmp((char *)&obj_name->value, "safRdn=", 7) == 0) {
- class_type = AVSV_SA_AMF_COMP_GLOBAL_ATTR;
- } else if (strncmp((char *)&obj_name->value, "safHealthcheckKey=", 18)
== 0) {
- if (strstr((char *)&obj_name->value, "safVersion=") != 0) {
- class_type = AVSV_SA_AMF_HEALTH_CHECK_TYPE;
- } else if (strstr((char *)&obj_name->value, "safComp=") != 0) {
- class_type = AVSV_SA_AMF_HEALTH_CHECK;
+ if (class_type == AVSV_SA_AMF_CLASS_INVALID) {
+ // we weren't able to do a simple lookup
+ if (prefix.compare("safSupportedCsType") == 0) {
+ if (obj_name.find("safCompType=") != std::string::npos)
{
+ class_type = AVSV_SA_AMF_CT_CS_TYPE;
+ } else if (obj_name.find("safComp=") !=
std::string::npos) {
+ class_type = AVSV_SA_AMF_COMP_CS_TYPE;
+ }
+ } else if (prefix.compare("safHealthcheckKey") == 0) {
+ if (obj_name.find("safVersion=") != std::string::npos) {
+ class_type = AVSV_SA_AMF_HEALTH_CHECK_TYPE;
+ } else if (obj_name.find("safComp=") !=
std::string::npos) {
+ class_type = AVSV_SA_AMF_HEALTH_CHECK;
+ }
+ } else if (prefix.compare("safVersion") == 0) {
+ // eg safVersion=4.0.0,safAppType=OpenSafApplicationType
+ const std::string::size_type first_comma =
obj_name.find(',');
+ const std::string::size_type second_equal =
obj_name.find('=', first_comma + 1);
+ const std::string type(obj_name.substr(first_comma + 1,
+ second_equal - first_comma - 1));
+
+ TRACE("versioned type %s", type.c_str());
+
+ class_type = versioned_types[type];
}
}
-
- /* Common Version Related */
- else if (strncmp((char *)&obj_name->value, "safVersion=", 11) == 0) {
- if (strstr((char *)&obj_name->value, "safAppType=") != 0) {
- class_type = AVSV_SA_AMF_APP_TYPE;
- } else if (strstr((char *)&obj_name->value, "safSgType=") != 0)
{
- class_type = AVSV_SA_AMF_SG_TYPE;
- } else if (strstr((char *)&obj_name->value, "safSuType=") != 0)
{
- class_type = AVSV_SA_AMF_SU_TYPE;
- } else if (strstr((char *)&obj_name->value, "safSvcType=") !=
0) {
- class_type = AVSV_SA_AMF_SVC_TYPE;
- } else if (strstr((char *)&obj_name->value, "safCSType=") != 0)
{
- class_type = AVSV_SA_AMF_CS_TYPE;
- } else if (strstr((char *)&obj_name->value, "safCompType=") !=
0) {
- class_type = AVSV_SA_AMF_COMP_TYPE;
- }
- }
-
+ TRACE_LEAVE2("%u", class_type);
return class_type;
}
@@ -684,7 +678,7 @@
SaInvocationT invocation, const SaNameT *object_name,
SaImmAdminOperationIdT op_id, const SaImmAdminOperationParamsT_2
**params)
{
- AVSV_AMF_CLASS_ID type = object_name_to_class_type(object_name);
+ AVSV_AMF_CLASS_ID type =
object_name_to_class_type(Amf::to_string(object_name));
TRACE_ENTER2("'%s', invocation: %llu, op: %llu", object_name->value,
invocation, op_id);
@@ -756,7 +750,7 @@
const SaNameT *object_name, const SaImmAttrNameT *attribute_names)
{
SaAisErrorT error;
- AVSV_AMF_CLASS_ID type = object_name_to_class_type(object_name);
+ AVSV_AMF_CLASS_ID type =
object_name_to_class_type(Amf::to_string(object_name));
TRACE_ENTER2("%s", object_name->value);
osafassert(rtattr_update_callback[type] != nullptr);
@@ -845,7 +839,7 @@
/* Verify that DN is valid for class */
id_from_class_name = class_name_to_class_type(class_name);
- id_from_dn = object_name_to_class_type(&operation->objectName);
+ id_from_dn =
object_name_to_class_type(Amf::to_string(&operation->objectName));
if (id_from_class_name != id_from_dn) {
LOG_ER("Illegal DN '%s' for class '%s'",
operation->objectName.value, class_name);
rc = SA_AIS_ERR_INVALID_PARAM;
@@ -974,7 +968,7 @@
are applied." */
while ((opdata = ccbutil_getNextCcbOp(ccb_id, opdata)) != nullptr) {
- type = object_name_to_class_type(&opdata->objectName);
+ type =
object_name_to_class_type(Amf::to_string(&opdata->objectName));
/* Standby AMFD should process CCB completed callback only for
CCB_DELETE. */
if ((avd_cb->avail_state_avd != SA_AMF_HA_ACTIVE) &&
@@ -1164,7 +1158,7 @@
TRACE_ENTER2("CCB ID %llu", ccb_id);
while ((opdata = ccbutil_getNextCcbOp(ccb_id, opdata)) != nullptr) {
- type = object_name_to_class_type(&opdata->objectName);
+ type =
object_name_to_class_type(Amf::to_string(&opdata->objectName));
/* Base types will not have an apply callback, skip empty ones
*/
if (ccb_apply_callback[type] != nullptr) {
/* insert the apply callback into the sorted list
@@ -1208,7 +1202,7 @@
next = ccb_apply_list;
while (next != nullptr) {
// TODO: would be more elegant with yet another function pointer
- type = object_name_to_class_type(&next->opdata->objectName);
+ type =
object_name_to_class_type(Amf::to_string(&next->opdata->objectName));
if ((type == AVSV_SA_AMF_SG) && (next->opdata->operationType ==
CCBUTIL_CREATE)) {
AVD_SG *sg =
sg_db->find(Amf::to_string(&next->opdata->objectName));
avd_sg_adjust_config(sg);
@@ -1417,7 +1411,7 @@
}
}
-void avd_class_impl_set(const char *className,
+void avd_class_impl_set(const std::string& className,
SaImmOiRtAttrUpdateCallbackT rtattr_cb,
SaImmOiAdminOperationCallbackT_2 adminop_cb,
AvdImmOiCcbCompletedCallbackT ccb_compl_cb, AvdImmOiCcbApplyCallbackT
ccb_apply_cb)
{
@@ -1529,7 +1523,7 @@
* @param attrValueType
* @param value
*/
-SaAisErrorT avd_saImmOiRtObjectUpdate_sync(const SaNameT *dn, SaImmAttrNameT
attributeName,
+SaAisErrorT avd_saImmOiRtObjectUpdate_sync(const std::string& dn,
SaImmAttrNameT attributeName,
SaImmValueTypeT attrValueType, void *value)
{
SaAisErrorT rc;
@@ -1537,7 +1531,7 @@
const SaImmAttrModificationT_2 *attrMods[] = {&attrMod, nullptr};
SaImmAttrValueT attrValues[] = {value};
- TRACE_ENTER2("'%s' %s", dn->value, attributeName);
+ TRACE_ENTER2("'%s' %s", dn.c_str(), attributeName);
attrMod.modType = SA_IMM_ATTR_VALUES_REPLACE;
attrMod.modAttr.attrName = attributeName;
@@ -1545,10 +1539,10 @@
attrMod.modAttr.attrValueType = attrValueType;
attrMod.modAttr.attrValues = attrValues;
- rc = saImmOiRtObjectUpdate_2(avd_cb->immOiHandle, dn, attrMods);
+ rc = saImmOiRtObjectUpdate_o3(avd_cb->immOiHandle, dn.c_str(),
attrMods);
if (rc != SA_AIS_OK) {
LOG_WA("saImmOiRtObjectUpdate of '%s' %s failed with %u",
- dn->value, attributeName, rc);
+ dn.c_str(), attributeName, rc);
}
return rc;
}
@@ -1560,7 +1554,7 @@
* @param dn (ptr to SaNameT)
* @return true/false
*/
-bool check_to_create_immjob_at_standby_amfd(const SaNameT *dn)
+bool check_to_create_immjob_at_standby_amfd(const std::string& dn)
{
AVSV_AMF_CLASS_ID class_type = AVSV_SA_AMF_CLASS_INVALID;
@@ -1590,10 +1584,10 @@
* @param attrValueType
* @param value
*/
-void avd_saImmOiRtObjectUpdate(const SaNameT *dn, const char *attributeName,
+void avd_saImmOiRtObjectUpdate(const std::string& dn, const std::string&
attributeName,
SaImmValueTypeT attrValueType, void *value)
{
- TRACE_ENTER2("'%s' %s", dn->value, attributeName);
+ TRACE_ENTER2("'%s' %s", dn.c_str(), attributeName.c_str());
size_t sz;
@@ -1605,8 +1599,8 @@
sz = value_size(attrValueType);
- ajob->dn_= *dn;
- ajob->attributeName_= StrDup(attributeName);
+ ajob->dn = dn;
+ ajob->attributeName_= StrDup(attributeName.c_str());
ajob->attrValueType_ = attrValueType;
ajob->value_ = new char[sz];
@@ -1622,10 +1616,10 @@
* @param parentName
* @param attrValues
*/
-void avd_saImmOiRtObjectCreate(const char *className,
- const SaNameT *parentName, const SaImmAttrValuesT_2 **attrValues)
+void avd_saImmOiRtObjectCreate(const std::string& className,
+ const std::string& parentName, const SaImmAttrValuesT_2 **attrValues)
{
- TRACE_ENTER2("%s %s", className, parentName->value);
+ TRACE_ENTER2("%s %s", className.c_str(), parentName.c_str());
if ((avd_cb->avail_state_avd != SA_AMF_HA_ACTIVE) &&
(check_to_create_immjob_at_standby_amfd(parentName) ==
false))
@@ -1633,9 +1627,9 @@
ImmObjCreate* ajob = new ImmObjCreate;
- ajob->className_ = StrDup(className);
+ ajob->className_ = StrDup(className.c_str());
osafassert(ajob->className_ != nullptr);
- ajob->parentName_ = *parentName;
+ ajob->parentName_ = parentName;
ajob->attrValues_ = dupSaImmAttrValuesT_array(attrValues);
Fifo::queue(ajob);
@@ -1646,9 +1640,9 @@
* Queue an IM object delete to be executed later, non blocking
* @param dn
*/
-void avd_saImmOiRtObjectDelete(const SaNameT* dn)
+void avd_saImmOiRtObjectDelete(const std::string& dn)
{
- TRACE_ENTER2("%s", dn->value);
+ TRACE_ENTER2("%s", dn.c_str());
if ((avd_cb->avail_state_avd != SA_AMF_HA_ACTIVE) &&
(check_to_create_immjob_at_standby_amfd(dn) == false))
@@ -1656,7 +1650,7 @@
ImmObjDelete *ajob = new ImmObjDelete;
- ajob->dn_ = *dn;
+ ajob->dn = dn;
Fifo::queue(ajob);
TRACE_LEAVE();
@@ -1671,19 +1665,20 @@
for (std::map<std::string, AVD_SU*>::const_iterator it = su_db->begin();
it != su_db->end(); it++) {
AVD_SU *su = it->second;
- avd_saImmOiRtObjectUpdate(&su->name, "saAmfSUPreInstantiable",
+ avd_saImmOiRtObjectUpdate(su->name, "saAmfSUPreInstantiable",
SA_IMM_ATTR_SAUINT32T, &su->saAmfSUPreInstantiable);
- avd_saImmOiRtObjectUpdate(&su->name, "saAmfSUHostedByNode",
- SA_IMM_ATTR_SANAMET, &su->saAmfSUHostedByNode);
+ const SaNameTWrapper hosted_by_node(su->saAmfSUHostedByNode);
+ avd_saImmOiRtObjectUpdate(su->name, "saAmfSUHostedByNode",
+ SA_IMM_ATTR_SANAMET, (void*)static_cast<const
SaNameT*>(hosted_by_node));
- avd_saImmOiRtObjectUpdate(&su->name, "saAmfSUPresenceState",
+ avd_saImmOiRtObjectUpdate(su->name, "saAmfSUPresenceState",
SA_IMM_ATTR_SAUINT32T, &su->saAmfSUPresenceState);
- avd_saImmOiRtObjectUpdate(&su->name, "saAmfSUOperState",
+ avd_saImmOiRtObjectUpdate(su->name, "saAmfSUOperState",
SA_IMM_ATTR_SAUINT32T, &su->saAmfSUOperState);
- avd_saImmOiRtObjectUpdate(&su->name, "saAmfSUReadinessState",
+ avd_saImmOiRtObjectUpdate(su->name, "saAmfSUReadinessState",
SA_IMM_ATTR_SAUINT32T, &su->saAmfSuReadinessState);
}
@@ -1692,15 +1687,15 @@
for (std::map<std::string, AVD_COMP*>::const_iterator it =
comp_db->begin();
it != comp_db->end(); it++) {
AVD_COMP *comp = it->second;
- avd_saImmOiRtObjectUpdate(&comp->comp_info.name,
+ avd_saImmOiRtObjectUpdate(Amf::to_string(&comp->comp_info.name),
"saAmfCompReadinessState", SA_IMM_ATTR_SAUINT32T,
&comp->saAmfCompReadinessState);
- avd_saImmOiRtObjectUpdate(&comp->comp_info.name,
+ avd_saImmOiRtObjectUpdate(Amf::to_string(&comp->comp_info.name),
"saAmfCompOperState", SA_IMM_ATTR_SAUINT32T,
&comp->saAmfCompOperState);
- avd_saImmOiRtObjectUpdate(&comp->comp_info.name,
+ avd_saImmOiRtObjectUpdate(Amf::to_string(&comp->comp_info.name),
"saAmfCompPresenceState", SA_IMM_ATTR_SAUINT32T,
&comp->saAmfCompPresenceState);
@@ -1710,7 +1705,7 @@
for (std::map<std::string, AVD_AVND *>::const_iterator it =
node_name_db->begin();
it != node_name_db->end(); it++) {
AVD_AVND *node = it->second;
- avd_saImmOiRtObjectUpdate(&node->name, "saAmfNodeOperState",
+ avd_saImmOiRtObjectUpdate(node->name, "saAmfNodeOperState",
SA_IMM_ATTR_SAUINT32T,
&node->saAmfNodeOperState);
}
@@ -1718,7 +1713,7 @@
for (std::map<std::string, AVD_SI*>::const_iterator it = si_db->begin();
it != si_db->end(); it++) {
AVD_SI *si = it->second;
- avd_saImmOiRtObjectUpdate(&si->name, "saAmfSIAssignmentState",
+ avd_saImmOiRtObjectUpdate(si->name, "saAmfSIAssignmentState",
SA_IMM_ATTR_SAUINT32T, &si->saAmfSIAssignmentState);
}
}
------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel