/// <exception cref="System.Exception"></exception>
        public bool TryLock(K key, long time, TimeUnit timeunit, long leaseTime, TimeUnit leaseUnit)
        {
            var keyData = ToData(key);
            var request = MapTryLockCodec.EncodeRequest(GetName(), keyData, ThreadUtil.GetThreadId(),
                                                        leaseUnit.ToMillis(leaseTime), timeunit.ToMillis(time));

            return(Invoke(request, keyData, m => MapTryLockCodec.DecodeResponse(m).response));
        }
Esempio n. 2
0
        public bool TryLock(TKey key, long time, TimeUnit timeunit, long leaseTime, TimeUnit leaseUnit)
        {
            var keyData = ToData(key);
            var request = MapTryLockCodec.EncodeRequest(Name, keyData, GetThreadId(), leaseUnit.ToMillis(leaseTime),
                                                        timeunit.ToMillis(time), _lockReferenceIdGenerator.GetNextReferenceId());

            return(Invoke(request, keyData, m => MapTryLockCodec.DecodeResponse(m).Response));
        }
Esempio n. 3
0
        /// <inheritdoc />
        public async Task <bool> TryLockAsync(TKey key, TimeSpan timeToWait, TimeSpan leaseTime)
        {
            var keyData = ToSafeData(key);

            var refId        = _lockReferenceIdSequence.GetNext();
            var leaseTimeMs  = leaseTime.CodecMilliseconds(long.MaxValue);
            var timeToWaitMs = timeToWait.CodecMilliseconds(0);

            var requestMessage  = MapTryLockCodec.EncodeRequest(Name, keyData, ContextId, leaseTimeMs, timeToWaitMs, refId);
            var responseMessage = await Cluster.Messaging.SendToKeyPartitionOwnerAsync(requestMessage, keyData).CAF();

            var response = MapTryLockCodec.DecodeResponse(responseMessage).Response;

            return(response);
        }
Esempio n. 4
0
        /// <inheritdoc />
        public async Task <bool> TryLockAsync(TKey key, TimeSpan timeToWait, TimeSpan leaseTime)
        {
            var keyData = ToSafeData(key);

            var refId = _lockReferenceIdSequence.GetNext();

            // codec wants -1 for server config, 0 for zero (useless), "max" for max = server config
            var leaseTimeMs = leaseTime.RoundedMilliseconds();

            // codec wants -1 for infinite, 0 for zero
            var timeToWaitMs = timeToWait.RoundedMilliseconds();

            var requestMessage  = MapTryLockCodec.EncodeRequest(Name, keyData, ContextId, leaseTimeMs, timeToWaitMs, refId);
            var responseMessage = await Cluster.Messaging.SendToKeyPartitionOwnerAsync(requestMessage, keyData).CfAwait();

            var response = MapTryLockCodec.DecodeResponse(responseMessage).Response;

            return(response);
        }