/// <summary> /// Process the given entry. /// </summary> /// <param name="entry"> /// The <b>IInvocableCacheEntry</b> to process. /// </param> /// <param name="valueNew"> /// The new value to update an entry with. /// </param> /// <param name="insert"> /// Specifies whether or not an insert is allowed. /// </param> /// <param name="ret"> /// Specifies whether or not a return value is required. /// </param> /// <returns> /// The result of the processing, if any. /// </returns> protected object processEntry(IInvocableCacheEntry entry, IVersionable valueNew, bool insert, bool ret) { bool match; IVersionable valueCur = (IVersionable)entry.Value; if (valueCur == null) { match = insert; } else { IComparable verCur = valueCur.VersionIndicator; IComparable verNew = valueNew.VersionIndicator; match = (verCur.CompareTo(verNew) == 0); } if (match) { valueNew.IncrementVersion(); entry.SetValue(valueNew, false); return(NO_RESULT); } return(ret ? valueCur : NO_RESULT); }