List of usage examples for com.google.common.util.concurrent JdkFutureAdapters listenInPoolThread
public static <V> ListenableFuture<V> listenInPoolThread(Future<V> future)
From source file:org.opendaylight.openflowplugin.applications.bulk.o.matic.SalBulkFlowServiceImpl.java
@Override public Future<RpcResult<Void>> addFlowsRpc(AddFlowsRpcInput input) { List<ListenableFuture<RpcResult<AddFlowOutput>>> bulkResults = new ArrayList<>(); for (BulkFlowBaseContentGrouping bulkFlow : input.getBulkFlowItem()) { AddFlowInputBuilder flowInputBuilder = new AddFlowInputBuilder((Flow) bulkFlow); final NodeRef nodeRef = bulkFlow.getNode(); flowInputBuilder.setNode(nodeRef); flowInputBuilder.setTableId(bulkFlow.getTableId()); Future<RpcResult<AddFlowOutput>> rpcAddFlowResult = flowService.addFlow(flowInputBuilder.build()); bulkResults.add(JdkFutureAdapters.listenInPoolThread(rpcAddFlowResult)); }/* www. ja va 2 s . c o m*/ return handleResultFuture(Futures.allAsList(bulkResults)); }
From source file:org.opendaylight.openflowplugin.impl.services.batch.FlatBatchGroupAdapters.java
/** * shortcut for {@link #convertBatchGroupResult(int)} with conversion {@link ListenableFuture} * * @param <T> exact type of batch flow output * @param resultUpdateGroupFuture batch group rpc-result (add/remove/update) * @param currentOffset offset of current batch plan step with respect to entire chain of steps * @return ListenableFuture with converted result {@link ProcessFlatBatchOutput} *//*from w w w . j a v a2s. co m*/ public static <T extends BatchGroupOutputListGrouping> ListenableFuture<RpcResult<ProcessFlatBatchOutput>> convertGroupBatchFutureForChain( final Future<RpcResult<T>> resultUpdateGroupFuture, final int currentOffset) { return Futures.transform(JdkFutureAdapters.listenInPoolThread(resultUpdateGroupFuture), FlatBatchGroupAdapters.<T>convertBatchGroupResult(currentOffset)); }
From source file:org.opendaylight.openflowplugin.impl.services.batch.FlatBatchMeterAdapters.java
/** * shortcut for {@link #convertBatchMeterResult(int)} with conversion {@link ListenableFuture} * * @param <T> exact type of batch flow output * @param resultUpdateMeterFuture batch group rpc-result (add/remove/update) * @param currentOffset offset of current batch plan step with respect to entire chain of steps * @return ListenableFuture with converted result {@link ProcessFlatBatchOutput} *///from ww w. j av a 2 s . c o m public static <T extends BatchMeterOutputListGrouping> ListenableFuture<RpcResult<ProcessFlatBatchOutput>> convertMeterBatchFutureForChain( final Future<RpcResult<T>> resultUpdateMeterFuture, final int currentOffset) { return Futures.transform(JdkFutureAdapters.listenInPoolThread(resultUpdateMeterFuture), FlatBatchMeterAdapters.<T>convertBatchMeterResult(currentOffset)); }
From source file:org.opendaylight.openflowplugin.impl.services.SalFlowsBatchServiceImpl.java
@Override public Future<RpcResult<UpdateFlowsBatchOutput>> updateFlowsBatch(final UpdateFlowsBatchInput input) { LOG.trace("Updating flows @ {} : {}", PathUtil.extractNodeId(input.getNode()), input.getBatchUpdateFlows().size()); final ArrayList<ListenableFuture<RpcResult<UpdateFlowOutput>>> resultsLot = new ArrayList<>(); for (BatchUpdateFlows batchFlow : input.getBatchUpdateFlows()) { final UpdateFlowInput updateFlowInput = new UpdateFlowInputBuilder(input) .setOriginalFlow(new OriginalFlowBuilder(batchFlow.getOriginalBatchedFlow()).build()) .setUpdatedFlow(new UpdatedFlowBuilder(batchFlow.getUpdatedBatchedFlow()).build()) .setFlowRef(createFlowRef(input.getNode(), batchFlow)).setNode(input.getNode()).build(); resultsLot.add(JdkFutureAdapters.listenInPoolThread(salFlowService.updateFlow(updateFlowInput))); }//from w ww. j av a 2s . c om final ListenableFuture<RpcResult<List<BatchFailedFlowsOutput>>> commonResult = Futures.transform( Futures.successfulAsList(resultsLot), FlowUtil.<UpdateFlowOutput>createCumulatingFunction(input.getBatchUpdateFlows())); ListenableFuture<RpcResult<UpdateFlowsBatchOutput>> updateFlowsBulkFuture = Futures.transform(commonResult, FlowUtil.FLOW_UPDATE_TRANSFORM); if (input.isBarrierAfter()) { updateFlowsBulkFuture = BarrierUtil.chainBarrier(updateFlowsBulkFuture, input.getNode(), transactionService, FlowUtil.FLOW_UPDATE_COMPOSING_TRANSFORM); } return updateFlowsBulkFuture; }
From source file:org.opendaylight.openflowplugin.impl.services.SalMetersBatchServiceImpl.java
@Override public Future<RpcResult<RemoveMetersBatchOutput>> removeMetersBatch(final RemoveMetersBatchInput input) { LOG.trace("Removing meters @ {} : {}", PathUtil.extractNodeId(input.getNode()), input.getBatchRemoveMeters().size()); final ArrayList<ListenableFuture<RpcResult<RemoveMeterOutput>>> resultsLot = new ArrayList<>(); for (BatchRemoveMeters addMeter : input.getBatchRemoveMeters()) { final RemoveMeterInput removeMeterInput = new RemoveMeterInputBuilder(addMeter) .setMeterRef(createMeterRef(input.getNode(), addMeter)).setNode(input.getNode()).build(); resultsLot.add(JdkFutureAdapters.listenInPoolThread(salMeterService.removeMeter(removeMeterInput))); }//from w ww. j a v a 2s. c om final ListenableFuture<RpcResult<List<BatchFailedMetersOutput>>> commonResult = Futures.transform( Futures.allAsList(resultsLot), MeterUtil.<RemoveMeterOutput>createCumulativeFunction(input.getBatchRemoveMeters())); ListenableFuture<RpcResult<RemoveMetersBatchOutput>> removeMetersBulkFuture = Futures .transform(commonResult, MeterUtil.METER_REMOVE_TRANSFORM); if (input.isBarrierAfter()) { removeMetersBulkFuture = BarrierUtil.chainBarrier(removeMetersBulkFuture, input.getNode(), transactionService, MeterUtil.METER_REMOVE_COMPOSING_TRANSFORM); } return removeMetersBulkFuture; }
From source file:org.opendaylight.openflowplugin.impl.services.SalGroupsBatchServiceImpl.java
@Override public Future<RpcResult<RemoveGroupsBatchOutput>> removeGroupsBatch(final RemoveGroupsBatchInput input) { LOG.trace("Removing groups @ {} : {}", PathUtil.extractNodeId(input.getNode()), input.getBatchRemoveGroups().size()); final ArrayList<ListenableFuture<RpcResult<RemoveGroupOutput>>> resultsLot = new ArrayList<>(); for (BatchRemoveGroups addGroup : input.getBatchRemoveGroups()) { final RemoveGroupInput removeGroupInput = new RemoveGroupInputBuilder(addGroup) .setGroupRef(createGroupRef(input.getNode(), addGroup)).setNode(input.getNode()).build(); resultsLot.add(JdkFutureAdapters.listenInPoolThread(salGroupService.removeGroup(removeGroupInput))); }/*from w w w .jav a 2 s . co m*/ final ListenableFuture<RpcResult<List<BatchFailedGroupsOutput>>> commonResult = Futures.transform( Futures.allAsList(resultsLot), GroupUtil.<RemoveGroupOutput>createCumulatingFunction(input.getBatchRemoveGroups())); ListenableFuture<RpcResult<RemoveGroupsBatchOutput>> removeGroupsBulkFuture = Futures .transform(commonResult, GroupUtil.GROUP_REMOVE_TRANSFORM); if (input.isBarrierAfter()) { removeGroupsBulkFuture = BarrierUtil.chainBarrier(removeGroupsBulkFuture, input.getNode(), transactionService, GroupUtil.GROUP_REMOVE_COMPOSING_TRANSFORM); } return removeGroupsBulkFuture; }
From source file:org.opendaylight.genius.alivenessmonitor.protocols.internal.AlivenessProtocolHandlerARP.java
@Override public void startMonitoringTask(MonitoringInfo monitorInfo) { if (arpService == null) { LOG.debug("ARP Service not available to send the packet"); return;//w ww .j a v a 2 s .c om } EndpointType source = monitorInfo.getSource().getEndpointType(); final String sourceInterface = Preconditions.checkNotNull(getInterfaceName(source), "Source interface is required to send ARP Packet for monitoring"); final String srcIp = Preconditions.checkNotNull(getIpAddress(source), "Source Ip address is required to send ARP Packet for monitoring"); final Optional<PhysAddress> srcMacAddressOptional = getMacAddress(source); if (srcMacAddressOptional.isPresent()) { PhysAddress srcMacAddress = srcMacAddressOptional.get(); EndpointType target = monitorInfo.getDestination().getEndpointType(); final String targetIp = Preconditions.checkNotNull(getIpAddress(target), "Target Ip address is required to send ARP Packet for monitoring"); if (LOG.isTraceEnabled()) { LOG.trace("sendArpRequest interface {}, senderIPAddress {}, targetAddress {}", sourceInterface, srcIp, targetIp); } InterfaceAddressBuilder interfaceAddressBuilder = new InterfaceAddressBuilder() .setInterface(sourceInterface).setIpAddress(IpAddressBuilder.getDefaultInstance(srcIp)); if (srcMacAddress != null) { interfaceAddressBuilder.setMacaddress(srcMacAddress); } List<InterfaceAddress> addresses = Collections.singletonList(interfaceAddressBuilder.build()); SendArpRequestInput input = new SendArpRequestInputBuilder().setInterfaceAddress(addresses) .setIpaddress(IpAddressBuilder.getDefaultInstance(targetIp)).build(); Future<RpcResult<Void>> future = arpService.sendArpRequest(input); final String msgFormat = String.format("Send ARP Request on interface %s to destination %s", sourceInterface, targetIp); Futures.addCallback(JdkFutureAdapters.listenInPoolThread(future), new FutureCallback<RpcResult<Void>>() { @Override public void onFailure(Throwable error) { LOG.error("Error - {}", msgFormat, error); } @Override public void onSuccess(RpcResult<Void> result) { if (result != null && !result.isSuccessful()) { LOG.warn("Rpc call to {} failed {}", msgFormat, getErrorText(result.getErrors())); } else { LOG.debug("Successful RPC Result - {}", msgFormat); } } }); } }
From source file:org.opendaylight.openflowplugin.applications.bulk.o.matic.SalBulkFlowServiceImpl.java
@Override public Future<RpcResult<Void>> removeFlowsRpc(RemoveFlowsRpcInput input) { List<ListenableFuture<RpcResult<RemoveFlowOutput>>> bulkResults = new ArrayList<>(); for (BulkFlowBaseContentGrouping bulkFlow : input.getBulkFlowItem()) { RemoveFlowInputBuilder flowInputBuilder = new RemoveFlowInputBuilder((Flow) bulkFlow); final NodeRef nodeRef = bulkFlow.getNode(); flowInputBuilder.setNode(nodeRef); flowInputBuilder.setTableId(bulkFlow.getTableId()); Future<RpcResult<RemoveFlowOutput>> rpcAddFlowResult = flowService.removeFlow(flowInputBuilder.build()); bulkResults.add(JdkFutureAdapters.listenInPoolThread(rpcAddFlowResult)); }//w w w .j a v a 2 s . com return handleResultFuture(Futures.allAsList(bulkResults)); }
From source file:org.opendaylight.openflowplugin.impl.statistics.StatisticsGatheringUtils.java
public static ListenableFuture<Boolean> gatherStatistics(final StatisticsGatherer statisticsGatheringService, final DeviceContext deviceContext, final MultipartType type) { final String deviceId = deviceContext.getPrimaryConnectionContext().getNodeId().toString(); EventIdentifier wholeProcessEventIdentifier = null; if (MultipartType.OFPMPFLOW.equals(type)) { wholeProcessEventIdentifier = new EventIdentifier(type.toString(), deviceId); EventsTimeCounter.markStart(wholeProcessEventIdentifier); }/*w w w . j av a 2 s . c o m*/ EventIdentifier ofpQueuToRequestContextEventIdentifier = new EventIdentifier( QUEUE2_REQCTX + type.toString(), deviceId); final ListenableFuture<RpcResult<List<MultipartReply>>> statisticsDataInFuture = JdkFutureAdapters .listenInPoolThread(statisticsGatheringService .getStatisticsOfType(ofpQueuToRequestContextEventIdentifier, type)); return transformAndStoreStatisticsData(statisticsDataInFuture, deviceContext, wholeProcessEventIdentifier, type); }
From source file:org.opendaylight.controller.md.statistics.manager.impl.StatRpcMsgManagerImpl.java
@Override public <T extends TransactionAware, D extends DataObject> void registrationRpcFutureCallBack( final Future<RpcResult<T>> future, final D inputObj, final NodeRef nodeRef) { Futures.addCallback(JdkFutureAdapters.listenInPoolThread(future), new FutureCallback<RpcResult<? extends TransactionAware>>() { @Override//from w w w . jav a 2 s . c om public void onSuccess(final RpcResult<? extends TransactionAware> result) { final TransactionId id = result.getResult().getTransactionId(); if (id == null) { LOG.warn("No protocol support"); } else { final NodeKey nodeKey = nodeRef.getValue().firstKeyOf(Node.class, NodeKey.class); final String cacheKey = buildCacheKey(id, nodeKey.getId()); final TransactionCacheContainer<? super TransactionAware> container = new TransactionCacheContainerImpl<>( id, inputObj, nodeKey.getId()); txCache.put(cacheKey, container); } } @Override public void onFailure(final Throwable t) { LOG.warn("Response Registration for Statistics RPC call fail!", t); } }); }