예제 #1
0
        protected virtual void PutTransientInternal(IData keyData, TValue value, long ttl, TimeUnit timeunit)
        {
            var valueData = ToData(value);
            var request   = MapPutTransientCodec.EncodeRequest(Name, keyData, valueData, GetThreadId(), timeunit.ToMillis(ttl));

            Invoke(request, keyData);
        }
        public void PutTransient(K key, V value, long ttl, TimeUnit timeunit)
        {
            var keyData   = ToData(key);
            var valueData = ToData(value);
            var request   = MapPutTransientCodec.EncodeRequest(GetName(), keyData, valueData, ThreadUtil.GetThreadId(),
                                                               timeunit.ToMillis(ttl));

            InvalidateNearCacheEntry(keyData);
            Invoke(request, keyData);
        }
예제 #3
0
        Task SetTransientAsync(IData keyData, IData valueData, TimeSpan timeToLive, CancellationToken cancellationToken = default)
        {
            var timeToLiveMs = timeToLive.CodecMilliseconds(-1000);

            var requestMessage = MapPutTransientCodec.EncodeRequest(Name, keyData, valueData, ContextId, timeToLiveMs);
            var task           = Cluster.Messaging.SendToKeyPartitionOwnerAsync(requestMessage, keyData, cancellationToken);

#if HZ_OPTIMIZE_ASYNC
            return(task);
#else
            await task.CAF();
#endif
        }
        Task SetTransientAsync(IData keyData, IData valueData, TimeSpan timeToLive, TimeSpan maxIdle, CancellationToken cancellationToken = default)
        {
            var timeToLiveMs = timeToLive.RoundedMilliseconds(false); // codec: 0 is infinite, -1 is server
            var maxIdleMs    = maxIdle.RoundedMilliseconds(false);    // codec: 0 is infinite, -1 is server
            var withMaxIdle  = maxIdleMs != -1;

            var requestMessage = withMaxIdle
                ? MapPutTransientWithMaxIdleCodec.EncodeRequest(Name, keyData, valueData, ContextId, timeToLiveMs, maxIdleMs)
                : MapPutTransientCodec.EncodeRequest(Name, keyData, valueData, ContextId, timeToLiveMs);
            var task = Cluster.Messaging.SendToKeyPartitionOwnerAsync(requestMessage, keyData, cancellationToken);

#if HZ_OPTIMIZE_ASYNC
            return(task);
#else
            await task.CfAwait();
#endif
        }