osaf/services/saf/amf/amfd/app.cc | 11 +++++------ osaf/services/saf/amf/amfd/apptype.cc | 6 +++++- osaf/services/saf/amf/amfd/ckpt_dec.cc | 8 +++++++- osaf/services/saf/amf/amfd/ckpt_enc.cc | 11 +++++++++-- osaf/services/saf/amf/amfd/ckpt_updt.cc | 6 +++--- osaf/services/saf/amf/amfd/include/app.h | 2 +- osaf/services/saf/amf/amfd/sg.cc | 6 +++++- osaf/services/saf/amf/amfd/si.cc | 6 +++++- osaf/services/saf/amf/amfd/util.cc | 2 +- 9 files changed, 41 insertions(+), 17 deletions(-)
diff --git a/osaf/services/saf/amf/amfd/app.cc b/osaf/services/saf/amf/amfd/app.cc --- a/osaf/services/saf/amf/amfd/app.cc +++ b/osaf/services/saf/amf/amfd/app.cc @@ -29,15 +29,14 @@ AmfDb<std::string, AVD_APP> *app_db = 0; static AVD_APP *avd_app_new(const SaNameT *dn) { AVD_APP *app = new AVD_APP(); - memcpy(app->name.value, dn->value, dn->length); - app->name.length = dn->length; + app->name_ = std::string((char*)dn->value, dn->length); return app; } // TODO(hafe) change this to a destructor static void avd_app_delete(AVD_APP *app) { - app_db->erase(Amf::to_string(&app->name)); + app_db->erase(app->name_); m_AVSV_SEND_CKPT_UPDT_ASYNC_RMV(avd_cb, app, AVSV_CKPT_AVD_APP_CONFIG); avd_apptype_remove_app(app); delete app; @@ -45,7 +44,7 @@ static void avd_app_delete(AVD_APP *app) static void app_add_to_model(AVD_APP *app) { - TRACE_ENTER2("%s", app->name.value); + TRACE_ENTER2("%s", app->name_.c_str()); /* Check type link to see if it has been added already */ if (app->app_type != NULL) { @@ -53,7 +52,7 @@ static void app_add_to_model(AVD_APP *ap goto done; } - app_db->insert(Amf::to_string(&app->name), app); + app_db->insert(app->name_, app); /* Find application type and make a link with app type */ app->app_type = avd_apptype_get(&app->saAmfAppType); @@ -294,7 +293,7 @@ static void app_ccb_apply_cb(CcbUtilOper if (!strcmp(attribute->attrName, "saAmfAppType")) { LOG_NO("Modified saAmfAppType from '%s' to '%s' for '%s'", app->saAmfAppType.value, - (*((SaNameT*)attribute->attrValues[0])).value, app->name.value); + (*((SaNameT*)attribute->attrValues[0])).value, app->name_.c_str()); avd_apptype_remove_app(app); app->saAmfAppType = *((SaNameT*)attribute->attrValues[0]); app->app_type = avd_apptype_get(&app->saAmfAppType); diff --git a/osaf/services/saf/amf/amfd/apptype.cc b/osaf/services/saf/amf/amfd/apptype.cc --- a/osaf/services/saf/amf/amfd/apptype.cc +++ b/osaf/services/saf/amf/amfd/apptype.cc @@ -160,7 +160,11 @@ static SaAisErrorT apptype_ccb_completed */ app = app_type->list_of_app; while (app != NULL) { - t_opData = ccbutil_getCcbOpDataByDN(opdata->ccbId, &app->name); + SaNameT tmp; + tmp.length = app->name_.size(); + memcpy(tmp.value, app->name_.c_str(), tmp.length); + + t_opData = ccbutil_getCcbOpDataByDN(opdata->ccbId, &tmp); if ((t_opData == NULL) || (t_opData->operationType != CCBUTIL_DELETE)) { app_exist = true; break; diff --git a/osaf/services/saf/amf/amfd/ckpt_dec.cc b/osaf/services/saf/amf/amfd/ckpt_dec.cc --- a/osaf/services/saf/amf/amfd/ckpt_dec.cc +++ b/osaf/services/saf/amf/amfd/ckpt_dec.cc @@ -341,10 +341,16 @@ static uint32_t dec_node_config(AVD_CL_C static void decode_app(NCS_UBAID *ub, AVD_APP *app) { - osaf_decode_sanamet(ub, &app->name); + SaNameT tmp; + tmp.length = app->name_.size(); + memcpy(tmp.value, (char*) app->name_.c_str(), tmp.length); + + osaf_decode_sanamet(ub, &tmp); osaf_decode_sanamet(ub, &app->saAmfAppType); osaf_decode_uint32(ub, (uint32_t*)&app->saAmfApplicationAdminState); osaf_decode_uint32(ub, &app->saAmfApplicationCurrNumSGs); + + app->name_ = std::string((char*) tmp.value, tmp.length); } /****************************************************************************\ diff --git a/osaf/services/saf/amf/amfd/ckpt_enc.cc b/osaf/services/saf/amf/amfd/ckpt_enc.cc --- a/osaf/services/saf/amf/amfd/ckpt_enc.cc +++ b/osaf/services/saf/amf/amfd/ckpt_enc.cc @@ -325,7 +325,11 @@ static uint32_t enc_node_config(AVD_CL_C static void encode_app(NCS_UBAID *ub, const AVD_APP *app) { - osaf_encode_sanamet(ub, &app->name); + SaNameT tmp; + tmp.length = app->name_.size(); + memcpy(tmp.value, (char*) app->name_.c_str(), tmp.length); + + osaf_encode_sanamet(ub, &tmp); osaf_encode_sanamet(ub, &app->saAmfAppType); osaf_encode_uint32(ub, app->saAmfApplicationAdminState); osaf_encode_uint32(ub, app->saAmfApplicationCurrNumSGs); @@ -362,7 +366,10 @@ static uint32_t enc_app_config(AVD_CL_CB encode_app(&enc->io_uba, app); break; case NCS_MBCSV_ACT_RMV: - osaf_encode_sanamet(&enc->io_uba, &app->name); + SaNameT tmp; + tmp.length = app->name_.size(); + memcpy(tmp.value, (char*) app->name_.c_str(), tmp.length); + osaf_encode_sanamet(&enc->io_uba, &tmp); break; default: osafassert(0); diff --git a/osaf/services/saf/amf/amfd/ckpt_updt.cc b/osaf/services/saf/amf/amfd/ckpt_updt.cc --- a/osaf/services/saf/amf/amfd/ckpt_updt.cc +++ b/osaf/services/saf/amf/amfd/ckpt_updt.cc @@ -98,13 +98,13 @@ uint32_t avd_ckpt_app(AVD_CL_CB *cb, AVD { uint32_t rc = NCSCC_RC_SUCCESS; - TRACE_ENTER2("%s - '%s'", action_name[action], ckpt_app->name.value); + TRACE_ENTER2("%s - '%s'", action_name[action], ckpt_app->name_.c_str()); osafassert (action == NCS_MBCSV_ACT_UPDATE); - AVD_APP *app = app_db->find(Amf::to_string(&ckpt_app->name)); + AVD_APP *app = app_db->find(ckpt_app->name_); if (app == NULL) { - LOG_ER("%s failed to find '%s'", __FUNCTION__, ckpt_app->name.value); + LOG_ER("%s failed to find '%s'", __FUNCTION__, ckpt_app->name_.c_str()); rc = NCSCC_RC_FAILURE; goto done; } diff --git a/osaf/services/saf/amf/amfd/include/app.h b/osaf/services/saf/amf/amfd/include/app.h --- a/osaf/services/saf/amf/amfd/include/app.h +++ b/osaf/services/saf/amf/amfd/include/app.h @@ -34,7 +34,7 @@ // TODO (hafe) change to class AmfApp typedef struct avd_app_tag { - SaNameT name; + std::string name_; SaNameT saAmfAppType; SaAmfAdminStateT saAmfApplicationAdminState; SaUint32T saAmfApplicationCurrNumSGs; 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 @@ -1416,7 +1416,11 @@ static SaAisErrorT sg_ccb_completed_cb(C sg = avd_sg_get(&opdata->objectName); if (sg->list_of_si != NULL) { /* check whether there is parent app delete */ - t_opData = ccbutil_getCcbOpDataByDN(opdata->ccbId, &sg->app->name); + SaNameT tmp; + tmp.length = sg->app->name_.size(); + memcpy(tmp.value, sg->app->name_.c_str(), tmp.length); + + t_opData = ccbutil_getCcbOpDataByDN(opdata->ccbId, &tmp); if (t_opData == NULL || t_opData->operationType != CCBUTIL_DELETE) { /* check whether there exists a delete operation for * each of the SIs in the SG's list in the current CCB diff --git a/osaf/services/saf/amf/amfd/si.cc b/osaf/services/saf/amf/amfd/si.cc --- a/osaf/services/saf/amf/amfd/si.cc +++ b/osaf/services/saf/amf/amfd/si.cc @@ -699,7 +699,11 @@ SaAisErrorT avd_si_config_get(AVD_APP *a searchParam.searchOneAttr.attrValueType = SA_IMM_ATTR_SASTRINGT; searchParam.searchOneAttr.attrValue = &className; - if ((rc = immutil_saImmOmSearchInitialize_2(avd_cb->immOmHandle, &app->name, SA_IMM_SUBTREE, + SaNameT tmp; + tmp.length = app->name_.size(); + memcpy(tmp.value, app->name_.c_str(), tmp.length); + + if ((rc = immutil_saImmOmSearchInitialize_2(avd_cb->immOmHandle, &tmp, SA_IMM_SUBTREE, SA_IMM_SEARCH_ONE_ATTR | SA_IMM_SEARCH_GET_SOME_ATTR, &searchParam, configAttributes, &searchHandle)) != SA_AIS_OK) { diff --git a/osaf/services/saf/amf/amfd/util.cc b/osaf/services/saf/amf/amfd/util.cc --- a/osaf/services/saf/amf/amfd/util.cc +++ b/osaf/services/saf/amf/amfd/util.cc @@ -1369,7 +1369,7 @@ void amfd_file_dump(const char *path) for (std::map<std::string, AVD_APP*>::const_iterator it = app_db->begin(); it != app_db->end(); it++) { const AVD_APP *app = it->second; - fprintf(f, "%s\n", app->name.value); + fprintf(f, "%s\n", app->name_.c_str()); fprintf(f, "\tsaAmfApplicationAdminState=%u\n", app->saAmfApplicationAdminState); fprintf(f, "\tsaAmfApplicationCurrNumSGs=%u\n", app->saAmfApplicationCurrNumSGs); } ------------------------------------------------------------------------------ Learn Graph Databases - Download FREE O'Reilly Book "Graph Databases" is the definitive new guide to graph databases and their applications. Written by three acclaimed leaders in the field, this first edition is now available. Download your free book today! http://p.sf.net/sfu/NeoTech _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel