@Override public void destroy() { OutputBuffer outputBuffer; List<PendingRead> pendingReads = ImmutableList.of(); synchronized (this) { if (delegate == null) { // ignore destroy if the buffer already in a terminal state. if (!state.setIf(FINISHED, state -> !state.isTerminal())) { return; } pendingReads = ImmutableList.copyOf(this.pendingReads); this.pendingReads.clear(); } outputBuffer = delegate; } // if there is no output buffer, free the pending reads if (outputBuffer == null) { for (PendingRead pendingRead : pendingReads) { pendingRead.getFutureResult().set(emptyResults(taskInstanceId, 0, true)); } return; } outputBuffer.destroy(); }
set(getDone(delegate));
ExtendedSettableFuture<String> toFuture = ExtendedSettableFuture.create(); toFuture.setAsync(fromFuture); fromFuture.set("abc"); assertEquals(toFuture.get(), "abc");
ExtendedSettableFuture<String> toFuture = ExtendedSettableFuture.create(); toFuture.setAsync(fromFuture); fromFuture.set("abc"); assertEquals(toFuture.get(), "abc");
set(getDone(delegate));
@Override public void destroy() { OutputBuffer outputBuffer; List<PendingRead> pendingReads = ImmutableList.of(); synchronized (this) { if (delegate == null) { // ignore destroy if the buffer already in a terminal state. if (!state.setIf(FINISHED, state -> !state.isTerminal())) { return; } pendingReads = ImmutableList.copyOf(this.pendingReads); this.pendingReads.clear(); } outputBuffer = delegate; } // if there is no output buffer, free the pending reads if (outputBuffer == null) { for (PendingRead pendingRead : pendingReads) { pendingRead.getFutureResult().set(emptyResults(taskInstanceId, 0, true)); } return; } outputBuffer.destroy(); }
SettableFuture<String> toFuture = SettableFuture.create(); mirror(fromFuture, toFuture, true); fromFuture.set("abc"); assertEquals(toFuture.get(), "abc");
@Override public void destroy() { OutputBuffer outputBuffer; List<PendingRead> pendingReads = ImmutableList.of(); synchronized (this) { if (delegate == null) { // ignore destroy if the buffer already in a terminal state. if (!state.setIf(FINISHED, state -> !state.isTerminal())) { return; } pendingReads = ImmutableList.copyOf(this.pendingReads); this.pendingReads.clear(); } outputBuffer = delegate; } // if there is no output buffer, free the pending reads if (outputBuffer == null) { for (PendingRead pendingRead : pendingReads) { pendingRead.getFutureResult().set(emptyResults(taskInstanceId, 0, true)); } return; } outputBuffer.destroy(); }
SettableFuture<String> toFuture = SettableFuture.create(); mirror(fromFuture, toFuture, true); fromFuture.set("abc"); assertEquals(toFuture.get(), "abc");
@Test public void testSet() throws Exception { ExtendedSettableFuture<String> future = ExtendedSettableFuture.create(); future.set("abc"); assertTrue(future.isDone()); assertFalse(future.isCancelled()); assertFalse(future.checkWasInterrupted()); assertEquals(future.get(), "abc"); }
@Test public void testSet() throws Exception { ExtendedSettableFuture<String> future = ExtendedSettableFuture.create(); future.set("abc"); assertTrue(future.isDone()); assertFalse(future.isCancelled()); assertFalse(future.checkWasInterrupted()); assertEquals(future.get(), "abc"); }