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:org.opendaylight.ofconfig.southbound.impl.api.ver12.helper.AbstractOfconfigVer12HandlerHelper.java

@Override
public Future<RpcResult<Void>> doPut(T request) {
    SettableFuture<RpcResult<Void>> resultFuture = SettableFuture.create();
    try {/*from w ww. j  av a  2  s .c  o m*/
        String netconfigId = getNetconfigTopoNodeId(request);
        Optional<CapableSwitch> capableSwitchOptional = getDeviceCapableSwitch(netconfigId);
        if (!capableSwitchOptional.isPresent()) {
            return buildNotFoundResult(netconfigId);
        }

        CapableSwitch newCapableSwitch = putCapableSwitch(capableSwitchOptional.get(), request);

        updateDeviceCapableSwitch(newCapableSwitch, netconfigId);

        updateOfOfconfig(netconfigId);

        resultFuture.set(RpcResultBuilder.<Void>success().build());

    } catch (Exception e) {
        String netconfigId = getNetconfigTopoNodeId(request);
        logger.error("put operation occurr error,netconf topo node id:{}", netconfigId, e);
        resultFuture.set(RpcResultBuilder.<Void>failed().withError(ErrorType.APPLICATION,
                "put operation occurr error,netconf topo node id:{}", netconfigId).build());

    }

    return resultFuture;
}

From source file:org.apache.bookkeeper.stream.segment.BKSegmentWriter.java

/**
 * Flush current entry buffer as an entry to bookkeeper.
 *//*from w  w w.  j  a v  a2s.c o m*/
private void flush0(boolean isCommitEntry, SettableFuture<SSN> future) {
    if (null == curEntryBuilder || (!isCommitEntry && 0 == curEntryBuilder.getBufferSize())) {
        if (null != future) {
            future.set(lastFlushedSSN);
        }
        return;
    }

    // 1. build current entry
    EntryBuilder entryBuilder = curEntryBuilder;
    if (isCommitEntry) {
        entryBuilder.asCommitEntry();
    } else {
        entryBuilder.asDataEntry();
    }
    Entry entry = entryBuilder.build();

    // 2. add current entry to pending queue
    pendingEntries.add(entry);

    // 3. flush current entry to bookkeeper
    AddEntryContext addCtx = new AddEntryContext(entry, future);
    EntryData entryData = entry.getEntryData();

    if (logger.isTraceEnabled()) {
        logger.trace("Flushing entry {} : {} to segment {} @ {}",
                new Object[] { numEntries, entry, segmentName, streamName });
    }

    lh.asyncAddEntry(entryData.data, entryData.offset, entryData.len, this, addCtx);

    // 4. flushing an entry will commit any uncommitted data.
    hasDataUncommitted = false;

    // 5. create next entry builder
    lastNumBytes = entry.getLastNumBytes() + entry.getNumBytes();
    lastNumRecords = entry.getLastNumRecords() + entry.getNumRecords();
    ++numEntries;

    try {
        curEntryBuilder = nextEntryBuilder();
    } catch (IOException e) {
        logger.error("Error on creating next entry on segment {}@{} : ",
                new Object[] { segmentName, streamName, e });
        inErrorState = true;
        curEntryBuilder = null;
    }
}

From source file:org.opendaylight.ofconfig.southbound.impl.api.ver12.helper.AbstractOfconfigVer12HandlerHelper.java

@Override
public Future<RpcResult<Void>> doMerge(T request) {
    SettableFuture<RpcResult<Void>> resultFuture = SettableFuture.create();
    try {/*from  ww w  .j  ava  2 s .  c  o  m*/
        String netconfigId = getNetconfigTopoNodeId(request);
        Optional<CapableSwitch> capableSwitchOptional = getDeviceCapableSwitch(netconfigId);
        if (!capableSwitchOptional.isPresent()) {
            return buildNotFoundResult(netconfigId);
        }

        CapableSwitch newCapableSwitch = mergeCapableSwitch(capableSwitchOptional.get(), request);

        updateDeviceCapableSwitch(newCapableSwitch, netconfigId);

        updateOfOfconfig(netconfigId);

        resultFuture.set(RpcResultBuilder.<Void>success().build());

    } catch (Exception e) {
        String netconfigId = getNetconfigTopoNodeId(request);
        logger.error("merge operation occurr error,netconf topo node id:{}", netconfigId, e);
        resultFuture.set(RpcResultBuilder.<Void>failed().withError(ErrorType.APPLICATION,
                "merge operation occurr error,netconf topo node id:{}", netconfigId).build());

    }

    return resultFuture;
}

From source file:org.opendaylight.ofconfig.southbound.impl.api.ver12.helper.AbstractOfconfigVer12HandlerHelper.java

@Override
public Future<RpcResult<Void>> doDelete(T request) {
    SettableFuture<RpcResult<Void>> resultFuture = SettableFuture.create();
    try {//from   w  ww.  j  av a2  s  . c  o  m
        String netconfigId = getNetconfigTopoNodeId(request);
        Optional<CapableSwitch> capableSwitchOptional = getDeviceCapableSwitch(netconfigId);
        if (!capableSwitchOptional.isPresent()) {
            return buildNotFoundResult(netconfigId);
        }

        CapableSwitch newCapableSwitch = deleteCapableSwitch(capableSwitchOptional.get(), request);

        updateDeviceCapableSwitch(newCapableSwitch, netconfigId);

        updateOfOfconfig(netconfigId);

        resultFuture.set(RpcResultBuilder.<Void>success().build());

    } catch (Exception e) {
        String netconfigId = getNetconfigTopoNodeId(request);
        logger.error("delete operation occurr error,netconf topo node id:{}", netconfigId, e);
        resultFuture.set(RpcResultBuilder.<Void>failed().withError(ErrorType.APPLICATION,
                "delete operation occurr error,netconf topo node id:{}", netconfigId).build());

    }

    return resultFuture;
}

From source file:io.crate.executor.transport.task.UpsertByIdTask.java

private List<SettableFuture<Long>> initializeBulkShardProcessor(Settings settings) {
    assert upsertById.updateColumns() != null || upsertById.insertColumns() != null;
    ShardUpsertRequest.Builder builder = new ShardUpsertRequest.Builder(
            CrateSettings.BULK_REQUEST_TIMEOUT.extractTimeValue(settings), false, // do not overwrite duplicates
            upsertById.numBulkResponses() > 0 || upsertById.items().size() > 1
                    || upsertById.updateColumns() != null, // continue on error on bulk, on multiple values and/or update
            upsertById.updateColumns(), upsertById.insertColumns(), jobId(), false);
    BulkShardProcessor<ShardUpsertRequest> bulkShardProcessor = new BulkShardProcessor<>(clusterService,
            transportBulkCreateIndicesAction, indexNameExpressionResolver, settings, bulkRetryCoordinatorPool,
            upsertById.isPartitionedTable(), upsertById.items().size(), builder,
            transportShardUpsertActionDelegate, jobId());
    bulkShardProcessorContext = new BulkShardProcessorContext(upsertById.executionPhaseId(),
            bulkShardProcessor);/*w  w  w  .j  a va2s.c o m*/

    if (upsertById.numBulkResponses() == 0) {
        final SettableFuture<Long> futureResult = SettableFuture.create();
        List<SettableFuture<Long>> resultList = new ArrayList<>(1);
        resultList.add(futureResult);
        Futures.addCallback(bulkShardProcessor.result(), new FutureCallback<BitSet>() {
            @Override
            public void onSuccess(@Nullable BitSet result) {
                if (result == null) {
                    // unknown rowcount
                    futureResult.set(Executor.ROWCOUNT_UNKNOWN);
                } else {
                    futureResult.set((long) result.cardinality());
                }
                bulkShardProcessorContext.close();
            }

            @Override
            public void onFailure(@Nonnull Throwable t) {
                futureResult.setException(t);
                bulkShardProcessorContext.close();
            }
        });
        return resultList;
    } else {
        final int numResults = upsertById.numBulkResponses();
        final Integer[] resultsRowCount = new Integer[numResults];
        final List<SettableFuture<Long>> resultList = new ArrayList<>(numResults);
        for (int i = 0; i < numResults; i++) {
            resultList.add(SettableFuture.<Long>create());
        }

        Futures.addCallback(bulkShardProcessor.result(), new FutureCallback<BitSet>() {
            @Override
            public void onSuccess(@Nullable BitSet result) {
                if (result == null) {
                    setAllToFailed(null);
                    return;
                }

                for (int i = 0; i < result.length(); i++) {
                    int resultIdx = upsertById.bulkIndices().get(i);

                    if (resultsRowCount[resultIdx] == null) {
                        resultsRowCount[resultIdx] = result.get(i) ? 1 : -2;
                    } else if (resultsRowCount[resultIdx] >= 0 && result.get(i)) {
                        resultsRowCount[resultIdx]++;
                    }
                }

                for (int i = 0; i < numResults; i++) {
                    SettableFuture<Long> future = resultList.get(i);
                    Integer rowCount = resultsRowCount[i];
                    if (rowCount != null && rowCount >= 0) {
                        future.set((long) rowCount);
                    } else {
                        // failure
                        future.set(Executor.ROWCOUNT_ERROR);
                    }
                }

                bulkShardProcessorContext.close();
            }

            private void setAllToFailed(@Nullable Throwable throwable) {
                if (throwable == null) {
                    for (SettableFuture<Long> future : resultList) {
                        future.set(Executor.ROWCOUNT_ERROR);
                    }
                } else {
                    for (SettableFuture<Long> future : resultList) {
                        future.setException(throwable);
                    }
                }
            }

            @Override
            public void onFailure(@Nonnull Throwable t) {
                setAllToFailed(t);
                bulkShardProcessorContext.close();
            }
        });
        return resultList;
    }
}

From source file:org.apache.beam.runners.dataflow.worker.WindmillStateReader.java

private <T> void consumeBag(TagBag bag, StateTag stateTag) {
    boolean shouldRemove;
    if (stateTag.requestPosition == null) {
        // This is the response for the first page.
        // Leave the future in the cache so subsequent requests for the first page
        // can return immediately.
        shouldRemove = false;/*ww  w.j a  va2 s.c o  m*/
    } else {
        // This is a response for a subsequent page.
        // Don't cache the future since we may need to make multiple requests with different
        // continuation positions.
        shouldRemove = true;
    }
    CoderAndFuture<T, ValuesAndContPosition<T>> coderAndFuture = getWaiting(stateTag, shouldRemove);
    SettableFuture<ValuesAndContPosition<T>> future = coderAndFuture.getNonDoneFuture(stateTag);
    Coder<T> coder = coderAndFuture.getAndClearCoder();
    List<T> values = this.<T>bagPageValues(bag, coder);
    future.set(new ValuesAndContPosition<T>(values,
            bag.hasContinuationPosition() ? bag.getContinuationPosition() : null));
}

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

@Override
public final ListenableFuture<ProgramController> resume() {
    if (!state.compareAndSet(State.SUSPENDED, State.RESUMING)) {
        return Futures
                .immediateFailedFuture(new IllegalStateException("Resumption not allowed").fillInStackTrace());
    }//w  ww. j ava 2  s .  com
    final SettableFuture<ProgramController> result = SettableFuture.create();
    executor(State.RESUMING).execute(new Runnable() {
        @Override
        public void run() {
            try {
                caller.resuming();
                doResume();
                state.set(State.ALIVE);
                result.set(AbstractProgramController.this);
                caller.alive();
            } catch (Throwable t) {
                error(t, result);
            }
        }
    });
    return result;
}

From source file:co.cask.cdap.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("Stopping not allowed").fillInStackTrace());
    }/*from www.ja  v a2  s.  c  o m*/
    final SettableFuture<ProgramController> result = SettableFuture.create();
    executor(State.STOPPING).execute(new Runnable() {
        @Override
        public void run() {
            try {
                caller.stopping();
                doStop();
                state.set(State.KILLED);
                result.set(AbstractProgramController.this);
                caller.killed();
            } catch (Throwable t) {
                error(t, result);
            }
        }
    });
    return result;
}

From source file:org.opendaylight.netconf.topology.pipeline.tx.ProxyWriteOnlyTransaction.java

@Override
public CheckedFuture<Void, TransactionCommitFailedException> submit() {
    final Future<Void> submit = delegate.submit();
    final SettableFuture<Void> settableFuture = SettableFuture.create();
    final CheckedFuture<Void, TransactionCommitFailedException> checkedFuture = Futures
            .makeChecked(settableFuture, new Function<Exception, TransactionCommitFailedException>() {
                @Nullable//from w  w w.  ja  v a  2 s .  c  om
                @Override
                public TransactionCommitFailedException apply(Exception input) {
                    return new TransactionCommitFailedException("Transaction commit failed", input);
                }
            });
    submit.onComplete(new OnComplete<Void>() {
        @Override
        public void onComplete(Throwable throwable, Void aVoid) throws Throwable {
            if (throwable == null) {
                settableFuture.set(aVoid);
            } else {
                settableFuture.setException(throwable);
            }
        }
    }, actorSystem.dispatcher());
    return checkedFuture;
}

From source file:org.opendaylight.openflowjava.protocol.impl.connection.ConnectionAdapterImpl.java

@Override
public void consume(DataObject message) {
    LOG.debug("ConsumeIntern msg");
    if (disconnectOccured) {
        return;/*  www  .  j  a v a 2 s  .com*/
    }
    if (message instanceof Notification) {
        // System events
        if (message instanceof DisconnectEvent) {
            systemListener.onDisconnectEvent((DisconnectEvent) message);
            responseCache.invalidateAll();
            disconnectOccured = true;
        } else if (message instanceof SwitchIdleEvent) {
            systemListener.onSwitchIdleEvent((SwitchIdleEvent) message);
        }
        // OpenFlow messages
        else if (message instanceof EchoRequestMessage) {
            messageListener.onEchoRequestMessage((EchoRequestMessage) message);
        } else if (message instanceof ErrorMessage) {
            messageListener.onErrorMessage((ErrorMessage) message);
        } else if (message instanceof ExperimenterMessage) {
            messageListener.onExperimenterMessage((ExperimenterMessage) message);
        } else if (message instanceof FlowRemovedMessage) {
            messageListener.onFlowRemovedMessage((FlowRemovedMessage) message);
        } else if (message instanceof HelloMessage) {
            LOG.info("Hello received / branch");
            messageListener.onHelloMessage((HelloMessage) message);
        } else if (message instanceof MultipartReplyMessage) {
            messageListener.onMultipartReplyMessage((MultipartReplyMessage) message);
        } else if (message instanceof PacketInMessage) {
            messageListener.onPacketInMessage((PacketInMessage) message);
        } else if (message instanceof PortStatusMessage) {
            messageListener.onPortStatusMessage((PortStatusMessage) message);
        } else {
            LOG.warn("message listening not supported for type: " + message.getClass());
        }
    } else {
        if (message instanceof OfHeader) {
            LOG.debug("OFheader msg received");
            RpcResponseKey key = createRpcResponseKey((OfHeader) message);
            final SettableFuture<RpcResult<?>> rpcFuture = findRpcResponse(key);
            if (rpcFuture != null) {
                LOG.debug("corresponding rpcFuture found");
                List<RpcError> errors = Collections.emptyList();
                LOG.debug("before setting rpcFuture");
                rpcFuture.set(Rpcs.getRpcResult(true, message, errors));
                LOG.debug("after setting rpcFuture");
                responseCache.invalidate(key);
            } else {
                LOG.warn("received unexpected rpc response: " + key);
            }
        } else {
            LOG.warn("message listening not supported for type: " + message.getClass());
        }
    }
}