Exemple #1
0
        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);
        }