ack, code review only/Thanks HansN On 01/25/2016 05:35 AM, Gary Lee wrote: > osaf/services/saf/amf/amfd/sirankedsu.cc | 143 > ++++++++++++------------------ > 1 files changed, 57 insertions(+), 86 deletions(-) > > > diff --git a/osaf/services/saf/amf/amfd/sirankedsu.cc > b/osaf/services/saf/amf/amfd/sirankedsu.cc > --- a/osaf/services/saf/amf/amfd/sirankedsu.cc > +++ b/osaf/services/saf/amf/amfd/sirankedsu.cc > @@ -34,20 +34,22 @@ > #include <imm.h> > #include <csi.h> > #include <logtrace.h> > +#include <algorithm> > +#include <string> > > AmfDb<std::pair<std::string, uint32_t>, AVD_SUS_PER_SI_RANK> > *sirankedsu_db= nullptr; > -static void avd_susi_namet_init(const SaNameT *object_name, SaNameT > *su_name, SaNameT *si_name); > +static void avd_susi_namet_init(const std::string& object_name, std::string& > su_name, std::string& si_name); > > static void avd_sirankedsu_db_add(AVD_SUS_PER_SI_RANK *sirankedsu) > { > AVD_SI *avd_si = nullptr; > - unsigned int rc = > sirankedsu_db->insert(make_pair(Amf::to_string(&(sirankedsu->indx.si_name)), > + unsigned int rc = > sirankedsu_db->insert(make_pair(sirankedsu->indx.si_name, > sirankedsu->indx.su_rank), sirankedsu); > osafassert(rc == NCSCC_RC_SUCCESS); > > /* Find the si name. */ > - avd_si = avd_si_get(&(sirankedsu->indx.si_name)); > - avd_si->add_rankedsu(&sirankedsu->su_name, sirankedsu->indx.su_rank); > + avd_si = avd_si_get(sirankedsu->indx.si_name); > + avd_si->add_rankedsu(sirankedsu->su_name, sirankedsu->indx.su_rank); > > /* Add sus_per_si_rank to si */ > sirankedsu->sus_per_si_rank_on_si = avd_si; > @@ -78,10 +80,7 @@ > > ranked_su_per_si = new AVD_SUS_PER_SI_RANK(); > > - ranked_su_per_si->indx.si_name.length = indx.si_name.length; > - memcpy(ranked_su_per_si->indx.si_name.value, indx.si_name.value, > - ranked_su_per_si->indx.si_name.length); > - > + ranked_su_per_si->indx.si_name = indx.si_name; > ranked_su_per_si->indx.su_rank = indx.su_rank; > > return ranked_su_per_si; > @@ -109,11 +108,10 @@ > AVD_SUS_PER_SI_RANK_INDX rank_indx; > > memset(&rank_indx, '\0', sizeof(AVD_SUS_PER_SI_RANK_INDX)); > - rank_indx.si_name.length = indx.si_name.length; > - memcpy(rank_indx.si_name.value, indx.si_name.value, > indx.si_name.length); > + rank_indx.si_name = indx.si_name; > rank_indx.su_rank = indx.su_rank; > > - ranked_su_per_si = > sirankedsu_db->find(make_pair(Amf::to_string(&(rank_indx.si_name)), > + ranked_su_per_si = sirankedsu_db->find(make_pair(rank_indx.si_name, > rank_indx.su_rank)); > > return ranked_su_per_si; > @@ -139,7 +137,7 @@ > if (ranked_su_per_si == nullptr) > return NCSCC_RC_FAILURE; > > - > sirankedsu_db->erase(make_pair(Amf::to_string(&(ranked_su_per_si->indx.si_name)), > + sirankedsu_db->erase(make_pair(ranked_su_per_si->indx.si_name, > ranked_su_per_si->indx.su_rank)); > delete ranked_su_per_si; > return NCSCC_RC_SUCCESS; > @@ -164,16 +162,13 @@ > { > uint32_t rank = 0; > AVD_SUS_PER_SI_RANK *avd_sus_per_si_rank = nullptr; > - SaNameT su_name; > - SaNameT si_name; > + std::string su_name; > + std::string si_name; > AVD_SUS_PER_SI_RANK_INDX indx; > > immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfRank"), attributes, 0, > &rank); > - > > - memset(&su_name, 0, sizeof(SaNameT)); > - memset(&si_name, 0, sizeof(SaNameT)); > - avd_susi_namet_init(dn, &su_name, &si_name); > + avd_susi_namet_init(Amf::to_string(dn), su_name, si_name); > > /* Find the avd_sus_per_si_rank name. */ > memset(&indx, '\0', sizeof(AVD_SUS_PER_SI_RANK_INDX)); > @@ -217,7 +212,7 @@ > > if (i_sus_per_si_rank != sus_per_si_rank) { > LOG_CR("SI '%s' having SU '%s' with rank %u, does not > exist in sirankedsu link list", > - sus_per_si_rank->indx.si_name.value, > sus_per_si_rank->su_name.value, > + sus_per_si_rank->indx.si_name.c_str(), > sus_per_si_rank->su_name.c_str(), > sus_per_si_rank->indx.su_rank); > } else { > if (prev_sus_per_si_rank == nullptr) { > @@ -228,7 +223,7 @@ > > sus_per_si_rank->sus_per_si_rank_list_si_next; > } > } > - > sus_per_si_rank->sus_per_si_rank_on_si->remove_rankedsu(Amf::to_string(&sus_per_si_rank->su_name)); > + > sus_per_si_rank->sus_per_si_rank_on_si->remove_rankedsu(sus_per_si_rank->su_name); > > sus_per_si_rank->sus_per_si_rank_list_si_next = nullptr; > sus_per_si_rank->sus_per_si_rank_on_si = nullptr; > @@ -237,54 +232,54 @@ > return; > } > > -static int is_config_valid(const SaNameT *dn, const SaImmAttrValuesT_2 > **attributes, CcbUtilOperationData_t *opdata) > +static int is_config_valid(const std::string& dn, const SaImmAttrValuesT_2 > **attributes, CcbUtilOperationData_t *opdata) > { > AVD_SI *avd_si = nullptr; > - SaNameT su_name; > - SaNameT si_name; > + std::string su_name; > + std::string si_name; > uint32_t rank = 0; > AVD_SUS_PER_SI_RANK_INDX indx; > AVD_SU *avd_su = nullptr; > > - memset(&su_name, 0, sizeof(SaNameT)); > - memset(&si_name, 0, sizeof(SaNameT)); > - avd_susi_namet_init(dn, &su_name, &si_name); > + avd_susi_namet_init(dn, su_name, si_name); > > /* Find the si name. */ > - avd_si = avd_si_get(&si_name); > + avd_si = avd_si_get(si_name); > > if (avd_si == nullptr) { > /* SI does not exist in current model, check CCB */ > if (opdata == nullptr) { > - report_ccb_validation_error(opdata, "'%s' does not > exist in model", si_name.value); > + report_ccb_validation_error(opdata, "'%s' does not > exist in model", si_name.c_str()); > return 0; > } > > - if (ccbutil_getCcbOpDataByDN(opdata->ccbId, &si_name) == > nullptr) { > + const SaNameTWrapper tmp_si_name(si_name); > + if (ccbutil_getCcbOpDataByDN(opdata->ccbId, tmp_si_name) == > nullptr) { > report_ccb_validation_error(opdata, "'%s' does not > exist in existing model or in CCB", > - si_name.value); > + si_name.c_str()); > return 0; > } > } > > /* Find the su name. */ > - avd_su = su_db->find(Amf::to_string(&su_name)); > + avd_su = su_db->find(su_name); > if (avd_su == nullptr) { > /* SU does not exist in current model, check CCB */ > if (opdata == nullptr) { > - report_ccb_validation_error(opdata, "'%s' does not > exist in model", su_name.value); > + report_ccb_validation_error(opdata, "'%s' does not > exist in model", su_name.c_str()); > return 0; > } > > - if (ccbutil_getCcbOpDataByDN(opdata->ccbId, &su_name) == > nullptr) { > + const SaNameTWrapper tmp_su_name(su_name); > + if (ccbutil_getCcbOpDataByDN(opdata->ccbId, tmp_su_name) == > nullptr) { > report_ccb_validation_error(opdata, "'%s' does not > exist in existing model or in CCB", > - su_name.value); > + su_name.c_str()); > return 0; > } > } > > if (immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfRank"), > attributes, 0, &rank) != SA_AIS_OK) { > - report_ccb_validation_error(opdata, "saAmfRank not found for > %s", dn->value); > + report_ccb_validation_error(opdata, "saAmfRank not found for > %s", dn.c_str()); > return 0; > } > > @@ -293,7 +288,7 @@ > if ((avd_sirankedsu_find(avd_cb, indx)) != nullptr ) { > if (opdata != nullptr) { > report_ccb_validation_error(opdata, "saAmfRankedSu > exists %s, si'%s', rank'%u'", > - dn->value, si_name.value, rank); > + dn.c_str(), si_name.c_str(), rank); > return 0; > } > return SA_AIS_OK; > @@ -302,43 +297,22 @@ > return SA_AIS_OK; > } > > -static void avd_susi_namet_init(const SaNameT *object_name, SaNameT > *su_name, SaNameT *si_name) > +static void avd_susi_namet_init(const std::string& object_name, std::string& > su_name, std::string& si_name) > { > - char *p = nullptr; > + std::string::size_type pos; > + std::string::size_type equal_pos; > > - if (su_name) { > - SaNameT temp_name; > - int i; > + // DN looks like: safRankedSu=safSu=SuName\,safSg=SgName\, > + // safApp=AppName,safSi=SiName,safApp=AppName */ > > - /* Take out Su Name. safRankedSu=safSu=SuName\,safSg=SgName\, > - safApp=AppName,safSi=SiName,safApp=AppName */ > - temp_name = *object_name; > - p = strstr((char *)temp_name.value, "safSi="); > - *(--p) = '\0'; /* null terminate at comma before si name */ > + // set si_name > + pos = object_name.find("safSi="); > + si_name = object_name.substr(pos); > > - /* Skip past the RDN tag */ > - p = strchr((char *)temp_name.value, '=') + 1; > - osafassert(p); > - memset(su_name, 0, sizeof(SaNameT)); > - /* Copy the RDN value which is a DN with escaped commas */ > - i = 0; > - while (*p) { > - if (*p != '\\') > - su_name->value[i++] = *p; > - > - p++; > - } > - /* i Points just after SU name ends, so it will give the name > length > - as it starts with zero. */ > - su_name->length = i; > - } > - > - if (si_name) { > - memset(si_name, 0, sizeof(SaNameT)); > - p = strstr((char *)object_name->value, "safSi="); > - si_name->length = strlen(p); > - memcpy(si_name->value, p, si_name->length); > - } > + // set su_name > + equal_pos = object_name.find('='); > + su_name = object_name.substr(equal_pos + 1, pos - equal_pos - 2); > + su_name.erase(std::remove(su_name.begin(), su_name.end(), '\\'), > su_name.end()); > } > > static void sirankedsu_ccb_apply_cb(CcbUtilOperationData_t *opdata) > @@ -368,25 +342,22 @@ > static int avd_sirankedsu_ccb_complete_delete_hdlr(CcbUtilOperationData_t > *opdata) > { > AVD_SI *si = nullptr; > - SaNameT su_name; > - SaNameT si_name; > + std::string su_name; > + std::string si_name; > AVD_SUS_PER_SI_RANK *su_rank_rec = 0; > bool found = false; > > TRACE_ENTER2("CCB ID %llu, '%s'", opdata->ccbId, > opdata->objectName.value); > > - memset(&su_name, 0, sizeof(SaNameT)); > - memset(&si_name, 0, sizeof(SaNameT)); > - avd_susi_namet_init(opdata->param.deleteOp.objectName, &su_name, > &si_name); > + avd_susi_namet_init(Amf::to_string(opdata->param.deleteOp.objectName), > su_name, si_name); > > /* determine if the su is ranked per si */ > for (std::map<std::pair<std::string, uint32_t>, > AVD_SUS_PER_SI_RANK*>::const_iterator > it = sirankedsu_db->begin(); it != > sirankedsu_db->end(); it++) { > su_rank_rec = it->second; > - if ((memcmp(&(su_rank_rec->indx.si_name), &si_name, > sizeof(SaNameT)) > - == 0) && > - (memcmp(&su_rank_rec->su_name.value, > - &su_name.value, su_name.length) == 0)) { > + > + if (su_rank_rec->indx.si_name.compare(si_name) == 0 && > + su_rank_rec->su_name.compare(su_name) == 0) { > found = true; > break; > } > @@ -398,17 +369,17 @@ > } > > /* Find the si name. */ > - si = avd_si_get(&si_name); > + si = avd_si_get(si_name); > > if (si == nullptr) { > - LOG_ER("SI '%s' not found", si_name.value); > + LOG_ER("SI '%s' not found", si_name.c_str()); > goto error; > } > > if (si != nullptr) { > /* SI should not be assigned while SI ranked SU needs to be > deleted */ > if (si->list_of_sisu != nullptr) { > - TRACE("Parent SI is in assigned state '%s'", > si->name.value); > + TRACE("Parent SI is in assigned state '%s'", > si->name.c_str()); > goto error; > } > } > @@ -430,7 +401,7 @@ > > switch (opdata->operationType) { > case CCBUTIL_CREATE: > - if (is_config_valid(&opdata->objectName, > opdata->param.create.attrValues, opdata)) > + if (is_config_valid(Amf::to_string(&opdata->objectName), > opdata->param.create.attrValues, opdata)) > rc = SA_AIS_OK; > break; > case CCBUTIL_MODIFY: > @@ -451,7 +422,7 @@ > return rc; > } > > -SaAisErrorT avd_sirankedsu_config_get(SaNameT *si_name, AVD_SI *si) > +SaAisErrorT avd_sirankedsu_config_get(const std::string& si_name, AVD_SI *si) > { > SaAisErrorT error = SA_AIS_ERR_FAILED_OPERATION; > SaImmSearchHandleT searchHandle; > @@ -468,7 +439,7 @@ > searchParam.searchOneAttr.attrValueType = SA_IMM_ATTR_SASTRINGT; > searchParam.searchOneAttr.attrValue = &className; > > - if (immutil_saImmOmSearchInitialize_2(avd_cb->immOmHandle, si_name, > SA_IMM_SUBTREE, > + if (immutil_saImmOmSearchInitialize_o2(avd_cb->immOmHandle, > si_name.c_str(), SA_IMM_SUBTREE, > SA_IMM_SEARCH_ONE_ATTR | SA_IMM_SEARCH_GET_ALL_ATTR, &searchParam, > nullptr, &searchHandle) != SA_AIS_OK) { > > @@ -480,13 +451,13 @@ > > LOG_NO("'%s'", dn.value); > > - indx.si_name = *si_name; > + indx.si_name = si_name; > if (immutil_getAttr(const_cast<SaImmAttrNameT>("saAmfRank"), > attributes, 0, &indx.su_rank) != SA_AIS_OK) { > LOG_ER("Get saAmfRank FAILED for '%s'", dn.value); > goto done1; > } > > - if (!is_config_valid(&dn, attributes, nullptr)) > + if (!is_config_valid(Amf::to_string(&dn), attributes, > nullptr)) > goto done2; > > if ((avd_sirankedsu = avd_sirankedsu_find(avd_cb, indx)) == > nullptr) {
------------------------------------------------------------------------------ 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 Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel