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