Hi Nagu,

there are some compiler errors related to TRACE,

osaf_extended_name_borrow() is missing for SaNameT and

c_str() for std::string.

/Thanks Hans


On 04/18/2017 03:04 PM, Hans Nordebäck wrote:
> Hi Nagu,
>
> Is the patch only valid for 5.1? /Regards Hans
>
> -----Original Message-----
> From: Hans Nordebäck [mailto:[email protected]]
> Sent: den 18 april 2017 14:49
> To: [email protected]; [email protected]; Minh Hon Chau 
> <[email protected]>; Gary Lee <[email protected]>
> Cc: [email protected]
> Subject: Re: [devel] [PATCH 1 of 1] amfd: disallow delete of CtCs 
> object if Ct maps to comp [#2428]
>
> Hi Nagu,
>
> can you please use the new git submit for review. /Thanks HansN
>
>
> On 04/14/2017 03:22 PM, [email protected] wrote:
> >   osaf/services/saf/amf/amfd/ctcstype.cc |  60 
> ++++++++++++++++++++++++++++++++-
> >   1 files changed, 58 insertions(+), 2 deletions(-)
> >
> >
> > diff --git a/osaf/services/saf/amf/amfd/ctcstype.cc
> > b/osaf/services/saf/amf/amfd/ctcstype.cc
> > --- a/osaf/services/saf/amf/amfd/ctcstype.cc
> > +++ b/osaf/services/saf/amf/amfd/ctcstype.cc
> > @@ -26,7 +26,7 @@
> >   #include <include/csi.h>
> >
> >   AmfDb<std::string, AVD_CTCS_TYPE> *ctcstype_db = nullptr;
> > -
> > +static void find_ct_name_from_association(const SaNameT *haystack,
> > +SaNameT *dn, const char *needle);
> >   static void ctcstype_db_add(AVD_CTCS_TYPE *ctcstype)
> >   {
> >        unsigned int rc = ctcstype_db->insert(ctcstype->name,ctcstype);
> > @@ -185,17 +185,73 @@ static SaAisErrorT ctcstype_ccb_complete
> >                report_ccb_validation_error(opdata, "Modification of 
> SaAmfCtCsType not supported");
> >                break;
> >        case CCBUTIL_DELETE:
> > +             AVD_CTCS_TYPE *ctcstype;
> > +             SaNameT ct_name;
> > +             AVD_COMP_TYPE *comp_type;
> > +             AVD_COMP *comp;
> > +             CcbUtilOperationData_t *t_opData;
> > +
> > +                ctcstype = 
> ctcstype_db->find(Amf::to_string(&opdata->objectName));
> > +                if (ctcstype != nullptr) {
> > + find_ct_name_from_association(&opdata->objectName, &ct_name, 
> ",safVersion");
> > +                     TRACE("'%s'", ct_name.value);
> > +                     comp_type = 
> comptype_db->find(Amf::to_string(&ct_name));
> > +                     if ((comp_type) && (nullptr != 
> comp_type->list_of_comp)) {
> > +                             /* check whether there exists a delete 
> operation for
> > +                              * each of the Comp in the comp_type 
> list in the current CCB
> > +                              */
> > +                             bool comp_exist = false;
> > +                             TRACE("SaAmfCompType '%s' has 
> components", comp_type->name.value);
> > +                             comp = comp_type->list_of_comp;
> > +                             while (comp != nullptr) {
> > +                                     TRACE("%s", 
> comp->comp_info.name.value);
> > +                                     t_opData = 
> ccbutil_getCcbOpDataByDN(opdata->ccbId, &comp->comp_info.name);
> > +                                     TRACE("%p", t_opData);
> > +                                     if ((t_opData == nullptr) || 
> (t_opData->operationType != CCBUTIL_DELETE)) {
> > + TRACE("Here %p", t_opData);
> > + comp_exist = true;
> > +                                             break;
> > +                                     }
> > +                                     comp = 
> comp->comp_type_list_comp_next;
> > +                             }
> > +                             if (comp_exist == true) {
> > +                                     rc = SA_AIS_ERR_BAD_OPERATION;
> > + report_ccb_validation_error(opdata, "SaAmfCompType '%s' is in 
> use", comp_type->name.value);
> > +                                     goto done;
> > +                             }
> > +                     } else
> > +                             TRACE("SaAmfCompType '%p'. 
> SaAmfCompType '%s' has no components", comp_type, ct_name.value);
> > +             }
> >                rc = SA_AIS_OK;
> >                break;
> >        default:
> >                osafassert(0);
> >                break;
> >        }
> > -
> > +done:
> >        TRACE_LEAVE2("%u", rc);
> >        return rc;
> >   }
> >
> > +/**
> > + * Initialize a DN by searching for needle in haystack where two 
> times safVersion comes.
> > + * @param haystack
> > + * @param dn
> > + * @param needle
> > + * @note: 
> "safSupportedCsType=safVersion=1\,safCSType=AmfDemo1,safVersion=1,safCompType=AmfDemo1"
> > + */
> > +static void find_ct_name_from_association(const SaNameT *haystack,
> > +SaNameT *dn, const char *needle) {
> > +        char *p;
> > +
> > +        memset(dn, 0, sizeof(SaNameT));
> > +        p = strstr((char*)haystack->value, needle);
> > +        osafassert(p);
> > +     p++; /* Increament after comma (,) */
> > +        dn->length = strlen(p);
> > +        memcpy(dn->value, p, dn->length); }
> > +
> >   static void ctcstype_ccb_apply_cb(CcbUtilOperationData_t *opdata)
> >   {
> >        AVD_CTCS_TYPE *ctcstype;
>
>
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most 
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot 
> _______________________________________________
> Opensaf-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/opensaf-devel

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to