Hi AndersBj, 1)For the OI, only the attribute values that have actually being changed must be included in the modify callback. Even though the change is backward compatible, The following can be the reasons for not sending unchanged values : a. It follows SAF spec b. waste of resources. c. OI are not light as appliers, can maintain the information on modification objects OI are expecting.
2) For the appliers, the change may be allowed: a. most of the appliers are light-weight and may not have previous information on the object attributes b. Appliers are not SAF standard (no strict rules) c. changing of modify type from ADD/DELETE to REPLACE may not have any effects on appliers, as they are just information receivers. Thanks, Neel. On Thursday 26 November 2015 02:22 AM, Anders Bjornerstedt wrote: > Hi Neel, > > Writing from the sidelines :-) > > I dont see any backwards compatibility issue as long as the OI callback > contains information that is equivalent in outcome/result to the effect of > the execution of the OM input. > As long as the callback contains what *could* have been the OM input and the > resulting value change is exactly the same, it should be ok. > > Remembe ralso that the OM users and the OI/application are decoupled. > > Only the attribute values that have actually been changed must be included in > the OI callback. > Including unchanged values is not strictly necessary and could be argued is a > waste of resources. > Still that would not be a backwards compatibility issue. > > Thanks > AndersBj > > >> ----Ursprungligt meddelande---- >> Från : [email protected] >> Datum : 25-11-2015 - 11:25 (GMT) >> Till : [email protected], [email protected], >> [email protected] >> Kopia : [email protected] >> Ämne : Re: [devel] [PATCH 1 of 1] imm: Canonicalize attributes presented by >> OiCcbObjectModifyCallback [#801] >> >> Hi Hung, >> >> The following is required by this ticket: >> >> 1. The saImmOiCcbObjectModifyCallback for implementer must pass only >> the values of the attributes actually >> modified by this modify operation will be provided. That is no deviation > >from current implementation for OI. >> The present patch changes ADD/DELETE to REPLACE for OI also. >> >> 2. The enhancement is about to pass "all writable after-image >> attributes" to the saImmOiCcbObjectModifyCallback for appliers. >> while passing change modify type ADD/DELETE to REPLACE. >> >> The present patch passes only the modification attributes that are >> modified by the modify Ccb operation. >> >> >> I have to NACK the patch. >> >> /Neel. >> >> >> On Friday 09 October 2015 04:45 PM, Hung Nguyen wrote: >>> osaf/services/saf/immsv/immnd/ImmModel.cc | 27 >>> +++++++++++++++++++++++++++ >>> 1 files changed, 27 insertions(+), 0 deletions(-) >>> >>> >>> This patch modifies the content of incoming IMMND_EVT_A2ND_OBJ_MODIFY >>> messages. >>> If the modType is SA_IMM_ATTR_VALUES_ADD or SA_IMM_ATTR_VALUES_DELETE, >>> it will be converted to SA_IMM_ATTR_VALUES_REPLACE and the values of the >>> attr-mod will be the values in the after image. >>> >>> diff --git a/osaf/services/saf/immsv/immnd/ImmModel.cc >>> b/osaf/services/saf/immsv/immnd/ImmModel.cc >>> --- a/osaf/services/saf/immsv/immnd/ImmModel.cc >>> +++ b/osaf/services/saf/immsv/immnd/ImmModel.cc >>> @@ -8705,6 +8705,33 @@ ImmModel::ccbObjectModify(const ImmsvOmC >>> if(err != SA_AIS_OK) { >>> break; //out of for-loop >>> } >>> + >>> + if (p->attrModType != SA_IMM_ATTR_VALUES_REPLACE) { >>> + osafassert(p->attrValue.attrValuesNumber); >>> + /* Free attribute values of the attr-mod */ >>> + immsv_evt_free_att_val_raw(&(p->attrValue.attrValue), >>> + p->attrValue.attrValueType); >>> + if (p->attrValue.attrValuesNumber > 1) { >>> + immsv_free_attr_list_raw(p->attrValue.attrMoreValues, >>> + p->attrValue.attrValueType); >>> + p->attrValue.attrMoreValues = NULL; >>> + } >>> + p->attrValue.attrValuesNumber = 0; >>> + >>> + TRACE("Canonicalizing attr-mod for attribute '%s'", >>> attrName.c_str()); >>> + p->attrModType = SA_IMM_ATTR_VALUES_REPLACE; >>> + if (!attrValue->empty()) { >>> + attrValue->copyValueToEdu(&(p->attrValue.attrValue), >>> + (SaImmValueTypeT) >>> p->attrValue.attrValueType); >>> + if (attrValue->extraValues()) { >>> + osafassert(attrValue->isMultiValued()); >>> + ImmAttrMultiValue* multiVal = (ImmAttrMultiValue *) >>> attrValue; >>> + >>> multiVal->copyExtraValuesToEdu(&(p->attrValue.attrMoreValues), >>> + (SaImmValueTypeT) >>> p->attrValue.attrValueType); >>> + } >>> + p->attrValue.attrValuesNumber = 1 + >>> attrValue->extraValues(); >>> + } /* else, attrValuesNumber is already set to 0 */ >>> + } >>> }//for (p = ....) >>> >>> // Prepare for call on PersistentBackEnd >> >> ------------------------------------------------------------------------------ >> Go from Idea to Many App Stores Faster with Intel(R) XDK >> Give your users amazing mobile app experiences with Intel(R) XDK. >> Use one codebase in this all-in-one HTML5 development environment. >> Design, debug & build mobile apps & 2D/3D high-impact games for multiple OSs. >> http://pubads.g.doubleclick.net/gampad/clk?id=254741551&iu=/4140 >> _______________________________________________ >> Opensaf-devel mailing list >> [email protected] >> https://lists.sourceforge.net/lists/listinfo/opensaf-devel >> ------------------------------------------------------------------------------ Go from Idea to Many App Stores Faster with Intel(R) XDK Give your users amazing mobile app experiences with Intel(R) XDK. Use one codebase in this all-in-one HTML5 development environment. Design, debug & build mobile apps & 2D/3D high-impact games for multiple OSs. http://pubads.g.doubleclick.net/gampad/clk?id=254741551&iu=/4140 _______________________________________________ Opensaf-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/opensaf-devel
