/// <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)); }
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)); }
/// <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); }
/// <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); }