List of usage examples for io.netty.util.concurrent Future isSuccess
boolean isSuccess();
From source file:org.redisson.RedissonMultiLock.java
License:Apache License
protected boolean isLockFailed(Future<Boolean> future) { return !future.isSuccess(); }
From source file:org.redisson.RedissonPermitExpirableSemaphore.java
License:Apache License
private RFuture<String> acquireAsync(final int permits, final long ttl, final TimeUnit timeUnit) { final RPromise<String> result = newPromise(); long timeoutDate = calcTimeout(ttl, timeUnit); RFuture<String> tryAcquireFuture = tryAcquireAsync(permits, timeoutDate); tryAcquireFuture.addListener(new FutureListener<String>() { @Override//from w w w . java 2 s . c o m public void operationComplete(Future<String> future) throws Exception { if (!future.isSuccess()) { result.tryFailure(future.cause()); return; } String permitId = future.getNow(); if (permitId != null && !permitId.startsWith(":")) { if (!result.trySuccess(permitId)) { releaseAsync(permitId); } return; } final RFuture<RedissonLockEntry> subscribeFuture = subscribe(); subscribeFuture.addListener(new FutureListener<RedissonLockEntry>() { @Override public void operationComplete(Future<RedissonLockEntry> future) throws Exception { if (!future.isSuccess()) { result.tryFailure(future.cause()); return; } acquireAsync(permits, subscribeFuture, result, ttl, timeUnit); } }); } }); return result; }
From source file:org.redisson.RedissonPermitExpirableSemaphore.java
License:Apache License
private void tryAcquireAsync(final AtomicLong time, final int permits, final RFuture<RedissonLockEntry> subscribeFuture, final RPromise<String> result, final long ttl, final TimeUnit timeUnit) { if (result.isDone()) { unsubscribe(subscribeFuture);/*from ww w. j ava 2 s .c o m*/ return; } if (time.get() <= 0) { unsubscribe(subscribeFuture); result.trySuccess(null); return; } long timeoutDate = calcTimeout(ttl, timeUnit); final long current = System.currentTimeMillis(); RFuture<String> tryAcquireFuture = tryAcquireAsync(permits, timeoutDate); tryAcquireFuture.addListener(new FutureListener<String>() { @Override public void operationComplete(Future<String> future) throws Exception { if (!future.isSuccess()) { unsubscribe(subscribeFuture); result.tryFailure(future.cause()); return; } final Long nearestTimeout; String permitId = future.getNow(); if (permitId != null) { if (!permitId.startsWith(":")) { unsubscribe(subscribeFuture); if (!result.trySuccess(permitId)) { releaseAsync(permitId); } return; } else { nearestTimeout = Long.valueOf(permitId.substring(1)) - System.currentTimeMillis(); } } else { nearestTimeout = null; } long elapsed = System.currentTimeMillis() - current; time.addAndGet(-elapsed); if (time.get() <= 0) { unsubscribe(subscribeFuture); result.trySuccess(null); return; } // waiting for message final long current = System.currentTimeMillis(); final RedissonLockEntry entry = getEntry(); synchronized (entry) { if (entry.getLatch().tryAcquire()) { tryAcquireAsync(time, permits, subscribeFuture, result, ttl, timeUnit); } else { final AtomicReference<Timeout> waitTimeoutFutureRef = new AtomicReference<Timeout>(); final Timeout scheduledFuture; if (nearestTimeout != null) { scheduledFuture = commandExecutor.getConnectionManager().newTimeout(new TimerTask() { @Override public void run(Timeout timeout) throws Exception { if (waitTimeoutFutureRef.get() != null && !waitTimeoutFutureRef.get().cancel()) { return; } long elapsed = System.currentTimeMillis() - current; time.addAndGet(-elapsed); tryAcquireAsync(time, permits, subscribeFuture, result, ttl, timeUnit); } }, nearestTimeout, TimeUnit.MILLISECONDS); } else { scheduledFuture = null; } final Runnable listener = new Runnable() { @Override public void run() { if (waitTimeoutFutureRef.get() != null && !waitTimeoutFutureRef.get().cancel()) { entry.getLatch().release(); return; } if (scheduledFuture != null && !scheduledFuture.cancel()) { entry.getLatch().release(); return; } long elapsed = System.currentTimeMillis() - current; time.addAndGet(-elapsed); tryAcquireAsync(time, permits, subscribeFuture, result, ttl, timeUnit); } }; entry.addListener(listener); long t = time.get(); Timeout waitTimeoutFuture = commandExecutor.getConnectionManager() .newTimeout(new TimerTask() { @Override public void run(Timeout timeout) throws Exception { if (scheduledFuture != null && !scheduledFuture.cancel()) { return; } synchronized (entry) { if (entry.removeListener(listener)) { long elapsed = System.currentTimeMillis() - current; time.addAndGet(-elapsed); tryAcquireAsync(time, permits, subscribeFuture, result, ttl, timeUnit); } } } }, t, TimeUnit.MILLISECONDS); waitTimeoutFutureRef.set(waitTimeoutFuture); } } } }); }
From source file:org.redisson.RedissonPermitExpirableSemaphore.java
License:Apache License
private void acquireAsync(final int permits, final RFuture<RedissonLockEntry> subscribeFuture, final RPromise<String> result, final long ttl, final TimeUnit timeUnit) { if (result.isDone()) { unsubscribe(subscribeFuture);/*from w w w.j a v a 2 s .c o m*/ return; } long timeoutDate = calcTimeout(ttl, timeUnit); RFuture<String> tryAcquireFuture = tryAcquireAsync(permits, timeoutDate); tryAcquireFuture.addListener(new FutureListener<String>() { @Override public void operationComplete(Future<String> future) throws Exception { if (!future.isSuccess()) { unsubscribe(subscribeFuture); result.tryFailure(future.cause()); return; } final Long nearestTimeout; String permitId = future.getNow(); if (permitId != null) { if (!permitId.startsWith(":")) { unsubscribe(subscribeFuture); if (!result.trySuccess(permitId)) { releaseAsync(permitId); } return; } else { nearestTimeout = Long.valueOf(permitId.substring(1)) - System.currentTimeMillis(); } } else { nearestTimeout = null; } final RedissonLockEntry entry = getEntry(); synchronized (entry) { if (entry.getLatch().tryAcquire(permits)) { acquireAsync(permits, subscribeFuture, result, ttl, timeUnit); } else { final Timeout scheduledFuture; if (nearestTimeout != null) { scheduledFuture = commandExecutor.getConnectionManager().newTimeout(new TimerTask() { @Override public void run(Timeout timeout) throws Exception { acquireAsync(permits, subscribeFuture, result, ttl, timeUnit); } }, nearestTimeout, TimeUnit.MILLISECONDS); } else { scheduledFuture = null; } Runnable listener = new Runnable() { @Override public void run() { if (scheduledFuture != null && !scheduledFuture.cancel()) { entry.getLatch().release(); return; } acquireAsync(permits, subscribeFuture, result, ttl, timeUnit); } }; entry.addListener(listener); } } } }); }
From source file:org.redisson.RedissonPermitExpirableSemaphore.java
License:Apache License
public RFuture<String> tryAcquireAsync() { final RPromise<String> result = newPromise(); RFuture<String> res = tryAcquireAsync(1, nonExpirableTimeout); res.addListener(new FutureListener<String>() { @Override//w ww . j a v a2 s . co m public void operationComplete(Future<String> future) throws Exception { if (!future.isSuccess()) { result.tryFailure(future.cause()); return; } String permitId = future.getNow(); if (permitId != null && !permitId.startsWith(":")) { if (!result.trySuccess(permitId)) { releaseAsync(permitId); } } else { result.trySuccess(null); } } }); return result; }
From source file:org.redisson.RedissonPermitExpirableSemaphore.java
License:Apache License
private RFuture<String> tryAcquireAsync(final int permits, long waitTime, final long ttl, final TimeUnit timeUnit) { final RPromise<String> result = newPromise(); final AtomicLong time = new AtomicLong(timeUnit.toMillis(waitTime)); final long current = System.currentTimeMillis(); long timeoutDate = calcTimeout(ttl, timeUnit); RFuture<String> tryAcquireFuture = tryAcquireAsync(permits, timeoutDate); tryAcquireFuture.addListener(new FutureListener<String>() { @Override//from w ww . ja v a 2 s. c o m public void operationComplete(Future<String> future) throws Exception { if (!future.isSuccess()) { result.tryFailure(future.cause()); return; } String permitId = future.getNow(); if (permitId != null && !permitId.startsWith(":")) { if (!result.trySuccess(permitId)) { releaseAsync(permitId); } return; } long elapsed = System.currentTimeMillis() - current; time.addAndGet(-elapsed); if (time.get() <= 0) { result.trySuccess(null); return; } final long current = System.currentTimeMillis(); final AtomicReference<Timeout> futureRef = new AtomicReference<Timeout>(); final RFuture<RedissonLockEntry> subscribeFuture = subscribe(); subscribeFuture.addListener(new FutureListener<RedissonLockEntry>() { @Override public void operationComplete(Future<RedissonLockEntry> future) throws Exception { if (!future.isSuccess()) { result.tryFailure(future.cause()); return; } if (futureRef.get() != null) { futureRef.get().cancel(); } long elapsed = System.currentTimeMillis() - current; time.addAndGet(-elapsed); tryAcquireAsync(time, permits, subscribeFuture, result, ttl, timeUnit); } }); if (!subscribeFuture.isDone()) { Timeout scheduledFuture = commandExecutor.getConnectionManager().newTimeout(new TimerTask() { @Override public void run(Timeout timeout) throws Exception { if (!subscribeFuture.isDone()) { result.trySuccess(null); } } }, time.get(), TimeUnit.MILLISECONDS); futureRef.set(scheduledFuture); } } }); return result; }
From source file:org.redisson.RedissonPermitExpirableSemaphore.java
License:Apache License
@Override public RFuture<Void> releaseAsync(final String permitId) { final RPromise<Void> result = newPromise(); tryReleaseAsync(permitId).addListener(new FutureListener<Boolean>() { @Override/* ww w . ja v a 2s. c o m*/ public void operationComplete(Future<Boolean> future) throws Exception { if (!future.isSuccess()) { result.tryFailure(future.cause()); return; } if (future.getNow()) { result.trySuccess(null); } else { result.tryFailure(new IllegalArgumentException( "Permit with id " + permitId + " has already been released or doesn't exist")); } } }); return result; }
From source file:org.redisson.RedissonPriorityDeque.java
License:Apache License
public RFuture<V> pollLastAsync() { final long threadId = Thread.currentThread().getId(); final RPromise<V> result = new RedissonPromise<V>(); lock.lockAsync(threadId).addListener(new FutureListener<Void>() { @Override//from ww w . java2s.c o m public void operationComplete(Future<Void> future) throws Exception { if (!future.isSuccess()) { result.tryFailure(future.cause()); return; } RFuture<V> f = commandExecutor.writeAsync(getName(), codec, RedisCommands.RPOP, getName()); f.addListener(new FutureListener<V>() { @Override public void operationComplete(Future<V> future) throws Exception { if (!future.isSuccess()) { result.tryFailure(future.cause()); return; } final V value = future.getNow(); lock.unlockAsync(threadId).addListener(new FutureListener<Void>() { @Override public void operationComplete(Future<Void> future) throws Exception { if (!future.isSuccess()) { result.tryFailure(future.cause()); return; } result.trySuccess(value); } }); } }); } }); return result; }
From source file:org.redisson.RedissonPriorityQueue.java
License:Apache License
public RFuture<V> pollAsync() { final long threadId = Thread.currentThread().getId(); final RPromise<V> result = new RedissonPromise<V>(); lock.lockAsync(threadId).addListener(new FutureListener<Void>() { @Override//from w ww . ja va2 s . c om public void operationComplete(Future<Void> future) throws Exception { if (!future.isSuccess()) { result.tryFailure(future.cause()); return; } RFuture<V> f = commandExecutor.writeAsync(getName(), codec, RedisCommands.LPOP, getName()); f.addListener(new FutureListener<V>() { @Override public void operationComplete(Future<V> future) throws Exception { if (!future.isSuccess()) { result.tryFailure(future.cause()); return; } final V value = future.getNow(); lock.unlockAsync(threadId).addListener(new FutureListener<Void>() { @Override public void operationComplete(Future<Void> future) throws Exception { if (!future.isSuccess()) { result.tryFailure(future.cause()); return; } result.trySuccess(value); } }); } }); } }); return result; }
From source file:org.redisson.RedissonReadLock.java
License:Apache License
@Override public RFuture<Boolean> forceUnlockAsync() { RFuture<Boolean> result = commandExecutor.evalWriteAsync(getName(), LongCodec.INSTANCE, RedisCommands.EVAL_BOOLEAN,//from ww w .j a v a 2 s . com "if (redis.call('hget', KEYS[1], 'mode') == 'read') then " + "redis.call('del', KEYS[1]); " + "redis.call('publish', KEYS[2], ARGV[1]); " + "return 1; " + "else " + "return 0; " + "end;", Arrays.<Object>asList(getName(), getChannelName()), LockPubSub.unlockMessage); result.addListener(new FutureListener<Boolean>() { @Override public void operationComplete(Future<Boolean> future) throws Exception { if (future.isSuccess() && future.getNow()) { cancelExpirationRenewal(); } } }); return result; }