protected virtual bool ReplaceIfSameInternal(IData keyData, TValue oldValue, TValue newValue) { var oldValueData = ToData(oldValue); var newValueData = ToData(newValue); var request = MapReplaceIfSameCodec.EncodeRequest(Name, keyData, oldValueData, newValueData, GetThreadId()); var clientMessage = Invoke(request, keyData); return(MapReplaceIfSameCodec.DecodeResponse(clientMessage).Response); }
/// <summary> /// Replaces an existing entry. /// </summary> /// <param name="keyData">A key.</param> /// <param name="expectedData">The expected value.</param> /// <param name="newData">The new value.</param> /// <param name="cancellationToken">A cancellation token.</param> /// <returns>true if the entry was replaced; otherwise false.</returns> protected async Task <bool> TryUpdateAsync(IData keyData, IData expectedData, IData newData, CancellationToken cancellationToken) { var requestMessage = MapReplaceIfSameCodec.EncodeRequest(Name, keyData, expectedData, newData, ContextId); var responseMessage = await Cluster.Messaging.SendToKeyPartitionOwnerAsync(requestMessage, keyData, cancellationToken).CfAwait(); var response = MapReplaceIfSameCodec.DecodeResponse(responseMessage).Response; return(response); }
public bool Replace(K key, V oldValue, V newValue) { var keyData = ToData(key); var oldValueData = ToData(oldValue); var newValueData = ToData(newValue); var request = MapReplaceIfSameCodec.EncodeRequest(GetName(), keyData, oldValueData, newValueData, ThreadUtil.GetThreadId()); InvalidateNearCacheEntry(keyData); var clientMessage = Invoke(request, keyData); return(MapReplaceIfSameCodec.DecodeResponse(clientMessage).response); }