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
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel