@Override public ICondition newCondition(String name) { checkNotNull(name, "Condition name can't be null"); ClientConditionProxy clientConditionProxy = new ClientConditionProxy(this, name, getContext()); clientConditionProxy.onInitialize(); return clientConditionProxy; }
@Override public void await() throws InterruptedException { await(Long.MAX_VALUE, TimeUnit.MILLISECONDS); }
@Override public boolean await(long time, TimeUnit unit) throws InterruptedException { long threadId = ThreadUtil.getThreadId(); beforeAwait(threadId); return doAwait(time, unit, threadId); }
private void beforeAwait(long threadId) { ClientMessage request = ConditionBeforeAwaitCodec .encodeRequest(conditionId, threadId, name, referenceIdGenerator.getNextReferenceId()); invokeOnPartition(request); }
@Override protected void onInitialize() { super.onInitialize(); referenceIdGenerator = getClient().getLockReferenceIdGenerator(); } }
private void beforeAwait(long threadId) { ClientMessage request = ConditionBeforeAwaitCodec .encodeRequest(conditionId, threadId, name, referenceIdGenerator.getNextReferenceId()); invokeOnPartition(request); }
@Override protected void onInitialize() { super.onInitialize(); referenceIdGenerator = getClient().getLockReferenceIdGenerator(); } }
@Override public boolean await(long time, TimeUnit unit) throws InterruptedException { long threadId = ThreadUtil.getThreadId(); beforeAwait(threadId); return doAwait(time, unit, threadId); }
@Override public void signal() { ClientMessage request = ConditionSignalCodec.encodeRequest(conditionId, ThreadUtil.getThreadId(), name); invokeOnPartition(request); }
@Override public void await() throws InterruptedException { await(Long.MAX_VALUE, TimeUnit.MILLISECONDS); }
@Override public ICondition newCondition(String name) { checkNotNull(name, "Condition name can't be null"); ClientConditionProxy clientConditionProxy = new ClientConditionProxy(this, name, getContext()); clientConditionProxy.onInitialize(); return clientConditionProxy; }
@Override public void signalAll() { ClientMessage request = ConditionSignalAllCodec.encodeRequest(conditionId, ThreadUtil.getThreadId(), name); invokeOnPartition(request); }
@Override public long awaitNanos(long nanosTimeout) throws InterruptedException { long start = System.nanoTime(); await(nanosTimeout, TimeUnit.NANOSECONDS); long end = System.nanoTime(); return nanosTimeout - (end - start); }
@Override public void signalAll() { ClientMessage request = ConditionSignalAllCodec.encodeRequest(conditionId, ThreadUtil.getThreadId(), name); invokeOnPartition(request); }
@Override public long awaitNanos(long nanosTimeout) throws InterruptedException { long start = System.nanoTime(); await(nanosTimeout, TimeUnit.NANOSECONDS); long end = System.nanoTime(); return nanosTimeout - (end - start); }
@Override public void signal() { ClientMessage request = ConditionSignalCodec.encodeRequest(conditionId, ThreadUtil.getThreadId(), name); invokeOnPartition(request); }
@Override public boolean awaitUntil(Date deadline) throws InterruptedException { long until = deadline.getTime(); final long durationMs = until - Clock.currentTimeMillis(); if (durationMs <= 0) { return false; } return await(durationMs, TimeUnit.MILLISECONDS); }
private boolean doAwait(long time, TimeUnit unit, long threadId) throws InterruptedException { final long timeoutInMillis = unit.toMillis(time); ClientMessage request = ConditionAwaitCodec .encodeRequest(conditionId, threadId, timeoutInMillis, name, referenceIdGenerator.getNextReferenceId()); ClientMessage response = invokeOnPartition(request, Long.MAX_VALUE); return ConditionAwaitCodec.decodeResponse(response).response; }
@Override public boolean awaitUntil(Date deadline) throws InterruptedException { long until = deadline.getTime(); final long durationMs = until - Clock.currentTimeMillis(); if (durationMs <= 0) { return false; } return await(durationMs, TimeUnit.MILLISECONDS); }
private boolean doAwait(long time, TimeUnit unit, long threadId) throws InterruptedException { final long timeoutInMillis = unit.toMillis(time); ClientMessage request = ConditionAwaitCodec .encodeRequest(conditionId, threadId, timeoutInMillis, name, referenceIdGenerator.getNextReferenceId()); ClientMessage response = invokeOnPartition(request, Long.MAX_VALUE); return ConditionAwaitCodec.decodeResponse(response).response; }