Example usage for com.google.common.util.concurrent SettableFuture set

List of usage examples for com.google.common.util.concurrent SettableFuture set

Introduction

In this page you can find the example usage for com.google.common.util.concurrent SettableFuture set.

Prototype

@Override
    public boolean set(@Nullable V value) 

Source Link

Usage

From source file:io.crate.blob.v2.BlobIndices.java

public ListenableFuture<Void> createBlobTable(String tableName, Settings indexSettings) {
    ImmutableSettings.Builder builder = ImmutableSettings.builder();
    builder.put(indexSettings);/*w  w  w. ja v  a2 s .  c o m*/
    builder.put(SETTING_INDEX_BLOBS_ENABLED, true);

    final SettableFuture<Void> result = SettableFuture.create();
    transportCreateIndexActionProvider.get().execute(
            new CreateIndexRequest(fullIndexName(tableName), builder.build()),
            new ActionListener<CreateIndexResponse>() {
                @Override
                public void onResponse(CreateIndexResponse createIndexResponse) {
                    assert createIndexResponse.isAcknowledged();
                    result.set(null);
                }

                @Override
                public void onFailure(Throwable e) {
                    result.setException(e);
                }
            });
    return result;
}

From source file:com.google.devtools.build.lib.remote.AbstractRemoteActionCache.java

/**
 * Downloads a blob with content hash {@code digest} and stores its content in memory.
 *
 * @return a future that completes after the download completes (succeeds / fails). If successful,
 *     the content is stored in the future's {@code byte[]}.
 *//*  w  w  w  .  j a v  a2s .c  o m*/
public ListenableFuture<byte[]> downloadBlob(Digest digest) {
    if (digest.getSizeBytes() == 0) {
        return EMPTY_BYTES;
    }
    ByteArrayOutputStream bOut = new ByteArrayOutputStream((int) digest.getSizeBytes());
    SettableFuture<byte[]> outerF = SettableFuture.create();
    Futures.addCallback(downloadBlob(digest, bOut), new FutureCallback<Void>() {
        @Override
        public void onSuccess(Void aVoid) {
            outerF.set(bOut.toByteArray());
        }

        @Override
        public void onFailure(Throwable t) {
            outerF.setException(t);
        }
    }, MoreExecutors.directExecutor());
    return outerF;
}

From source file:io.crate.blob.v2.BlobIndicesService.java

public ListenableFuture<Void> createBlobTable(String tableName, Settings indexSettings) {
    Settings.Builder builder = Settings.builder();
    builder.put(indexSettings);// w ww  .  j a  v a  2s .  co  m
    builder.put(SETTING_INDEX_BLOBS_ENABLED, true);

    final SettableFuture<Void> result = SettableFuture.create();
    transportCreateIndexActionProvider.get().execute(
            new CreateIndexRequest(fullIndexName(tableName), builder.build()),
            new ActionListener<CreateIndexResponse>() {
                @Override
                public void onResponse(CreateIndexResponse createIndexResponse) {
                    assert createIndexResponse.isAcknowledged();
                    result.set(null);
                }

                @Override
                public void onFailure(Throwable e) {
                    result.setException(e);
                }
            });
    return result;
}

From source file:io.crate.executor.transport.RepositoryService.java

public ListenableFuture<Long> execute(DropRepositoryAnalyzedStatement analyzedStatement) {
    final SettableFuture<Long> future = SettableFuture.create();
    final String repoName = analyzedStatement.repositoryName();
    deleteRepositoryAction.execute(new DeleteRepositoryRequest(repoName),
            new ActionListener<DeleteRepositoryResponse>() {
                @Override/*from  w  w  w.  java 2  s. co  m*/
                public void onResponse(DeleteRepositoryResponse deleteRepositoryResponse) {
                    if (!deleteRepositoryResponse.isAcknowledged()) {
                        LOGGER.info("delete repository '{}' not acknowledged", repoName);
                    }
                    future.set(1L);
                }

                @Override
                public void onFailure(Throwable e) {
                    future.setException(e);
                }
            });
    return future;
}

From source file:com.google.cloud.pubsub.spi.v1.MessageDispatcher.java

public void processReceivedMessages(List<com.google.pubsub.v1.ReceivedMessage> responseMessages) {
    int receivedMessagesCount = responseMessages.size();
    if (receivedMessagesCount == 0) {
        return;/*from w w w.  j  av a 2 s.  com*/
    }
    Instant now = new Instant(clock.millis());
    int totalByteCount = 0;
    final ArrayList<AckHandler> ackHandlers = new ArrayList<>(responseMessages.size());
    for (ReceivedMessage pubsubMessage : responseMessages) {
        int messageSize = pubsubMessage.getMessage().getSerializedSize();
        totalByteCount += messageSize;
        ackHandlers.add(new AckHandler(pubsubMessage.getAckId(), messageSize));
    }
    Instant expiration = now.plus(messageDeadlineSeconds * 1000);
    logger.log(Level.INFO, "Received " + responseMessages.size() + " messages at " + now);

    messagesWaiter.incrementPendingMessages(responseMessages.size());
    Iterator<AckHandler> acksIterator = ackHandlers.iterator();
    for (ReceivedMessage userMessage : responseMessages) {
        final PubsubMessage message = userMessage.getMessage();
        final AckHandler ackHandler = acksIterator.next();
        final SettableFuture<AckReply> response = SettableFuture.create();
        final AckReplyConsumer consumer = new AckReplyConsumer() {
            @Override
            public void accept(AckReply reply, Throwable t) {
                if (reply != null) {
                    response.set(reply);
                } else {
                    response.setException(t);
                }
            }
        };
        Futures.addCallback(response, ackHandler);
        executor.submit(new Runnable() {
            @Override
            public void run() {
                receiver.receiveMessage(message, consumer);
            }
        });
    }

    synchronized (outstandingAckHandlers) {
        outstandingAckHandlers
                .add(new ExtensionJob(expiration, INITIAL_ACK_DEADLINE_EXTENSION_SECONDS, ackHandlers));
    }
    setupNextAckDeadlineExtensionAlarm(expiration);

    try {
        flowController.reserve(receivedMessagesCount, totalByteCount);
    } catch (FlowController.FlowControlException unexpectedException) {
        throw new IllegalStateException("Flow control unexpected exception", unexpectedException);
    }
}

From source file:co.cask.tigon.internal.app.runtime.AbstractProgramController.java

@Override
public final ListenableFuture<ProgramController> stop() {
    if (!state.compareAndSet(State.STARTING, State.STOPPING)
            && !state.compareAndSet(State.ALIVE, State.STOPPING)
            && !state.compareAndSet(State.SUSPENDED, State.STOPPING)) {
        return Futures
                .immediateFailedFuture(new IllegalStateException("Resumption not allowed").fillInStackTrace());
    }//  w w  w.j a  v a  2 s  . co m
    final SettableFuture<ProgramController> result = SettableFuture.create();
    executor(State.STOPPING).execute(new Runnable() {
        @Override
        public void run() {
            try {
                caller.stopping();
                doStop();
                state.set(State.STOPPED);
                result.set(AbstractProgramController.this);
                caller.stopped();
            } catch (Throwable t) {
                error(t, result);
            }
        }
    });
    return result;
}

From source file:io.prestosql.operator.Driver.java

private Driver(DriverContext driverContext, List<Operator> operators) {
    this.driverContext = requireNonNull(driverContext, "driverContext is null");
    this.allOperators = ImmutableList.copyOf(requireNonNull(operators, "operators is null"));
    checkArgument(allOperators.size() > 1, "At least two operators are required");
    this.activeOperators = new ArrayList<>(operators);
    checkArgument(!operators.isEmpty(), "There must be at least one operator");

    Optional<SourceOperator> sourceOperator = Optional.empty();
    Optional<DeleteOperator> deleteOperator = Optional.empty();
    for (Operator operator : operators) {
        if (operator instanceof SourceOperator) {
            checkArgument(!sourceOperator.isPresent(), "There must be at most one SourceOperator");
            sourceOperator = Optional.of((SourceOperator) operator);
        } else if (operator instanceof DeleteOperator) {
            checkArgument(!deleteOperator.isPresent(), "There must be at most one DeleteOperator");
            deleteOperator = Optional.of((DeleteOperator) operator);
        }//from   www . j a  v  a  2s  .com
    }
    this.sourceOperator = sourceOperator;
    this.deleteOperator = deleteOperator;

    currentTaskSource = sourceOperator
            .map(operator -> new TaskSource(operator.getSourceId(), ImmutableSet.of(), false)).orElse(null);
    // initially the driverBlockedFuture is not blocked (it is completed)
    SettableFuture<?> future = SettableFuture.create();
    future.set(null);
    driverBlockedFuture.set(future);
}

From source file:com.github.sparkfy.network.client.TransportClient.java

/**
 * Synchronously sends an opaque message to the RpcHandler on the server-side, waiting for up to
 * a specified timeout for a response./*from ww w.ja  v  a 2 s  .  c o  m*/
 */
public ByteBuffer sendRpcSync(ByteBuffer message, long timeoutMs) {
    final SettableFuture<ByteBuffer> result = SettableFuture.create();

    sendRpc(message, new RpcResponseCallback() {
        @Override
        public void onSuccess(ByteBuffer response) {
            ByteBuffer copy = ByteBuffer.allocate(response.remaining());
            copy.put(response);
            // flip "copy" to make it readable
            copy.flip();
            result.set(copy);
        }

        @Override
        public void onFailure(Throwable e) {
            result.setException(e);
        }
    });

    try {
        return result.get(timeoutMs, TimeUnit.MILLISECONDS);
    } catch (ExecutionException e) {
        throw Throwables.propagate(e.getCause());
    } catch (Exception e) {
        throw Throwables.propagate(e);
    }
}

From source file:com.microsoft.windowsazure.mobileservices.table.sync.MobileServiceSyncTable.java

private void insertInternal(JsonObject json, final SettableFuture<E> finalFuture) {
    ListenableFuture<JsonObject> internalFuture = mInternalTable.insert(json);

    Futures.addCallback(internalFuture, new FutureCallback<JsonObject>() {
        @Override//from w ww.  ja v a 2 s.  c  om
        public void onFailure(Throwable throwable) {
            finalFuture.setException(throwable);
        }

        @Override
        public void onSuccess(JsonObject result) {
            finalFuture.set(parseResults(result).get(0));
        }
    });
}

From source file:io.crate.action.sql.DDLAnalysisDispatcher.java

@Override
public ListenableFuture<Long> visitRefreshTableAnalysis(RefreshTableAnalysis analysis, Void context) {
    String[] indexNames = getIndexNames(analysis.table(), analysis.partitionName());
    if (analysis.schema().systemSchema() || indexNames.length == 0) {
        // shortcut when refreshing on system tables
        // or empty partitioned tables
        return Futures.immediateFuture(null);
    } else {/*from  w  ww  .ja  va 2s  .com*/
        final SettableFuture<Long> future = SettableFuture.create();
        RefreshRequest request = new RefreshRequest(indexNames);
        transportRefreshAction.execute(request, new ActionListener<RefreshResponse>() {
            @Override
            public void onResponse(RefreshResponse refreshResponse) {
                future.set(null); // no row count
            }

            @Override
            public void onFailure(Throwable e) {
                future.setException(e);
            }
        });
        return future;
    }
}