Handling code in service handlers (expect PacketProcessingServiceImpl) were wrapped
to handleServiceCall() method.
Method handleServiceCall() was moved to CommonService abstract class
Change-Id: I027f1b0658b4805366748377dfd43ca9c102df44
Signed-off-by: Jozef Gloncak <jgloncak@cisco.com>
*/
package org.opendaylight.openflowplugin.impl.services;
+import com.google.common.base.Function;
+import com.google.common.util.concurrent.SettableFuture;
+import org.opendaylight.openflowplugin.api.openflow.device.RequestContext;
+import org.opendaylight.yangtools.yang.binding.DataObject;
+
import com.google.common.util.concurrent.Futures;
import java.math.BigInteger;
import java.util.concurrent.Future;
import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
import org.slf4j.Logger;
-public class CommonService {
+abstract class CommonService {
private static final Logger LOG = org.slf4j.LoggerFactory.getLogger(CommonService.class);
private static final long WAIT_TIME = 2000;
protected final static Future<RpcResult<Void>> ERROR_RPC_RESULT = Futures.immediateFuture(RpcResultBuilder
protected DeviceContext deviceContext;
private ConnectionAdapter primaryConnectionAdapter;
- public CommonService() {
+ CommonService() {
}
public CommonService(final RpcContext rpcContext) {
return primaryConnectionAdapter;
}
+ <T extends DataObject, F> Future<RpcResult<T>> handleServiceCall(final BigInteger connectionID,
+ final Function<BigInteger,Future<RpcResult<F>>> function) {
+ LOG.debug("Calling the FlowMod RPC method on MessageDispatchService");
+
+ final RequestContext<T> requestContext = rpcContext.createRequestContext();
+ final SettableFuture<RpcResult<T>> result = rpcContext.storeOrFail(requestContext);
+
+ if (!result.isDone()) {
+ final Future<RpcResult<F>> resultFromOFLib = function.apply(connectionID);
+
+ final RpcResultConvertor<T> rpcResultConvertor = new RpcResultConvertor<>(requestContext, deviceContext);
+ rpcResultConvertor.processResultFromOfJava(resultFromOFLib);
+
+ } else {
+ RequestContextUtil.closeRequstContext(requestContext);
+ }
+ return result;
+ }
+
}
*/
package org.opendaylight.openflowplugin.impl.services;
+import com.google.common.base.Function;
+import java.math.BigInteger;
import org.opendaylight.yangtools.yang.binding.DataObject;
-
import com.google.common.util.concurrent.JdkFutureAdapters;
import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.SettableFuture;
import java.util.concurrent.Future;
import org.opendaylight.openflowplugin.api.OFConstants;
import org.opendaylight.openflowplugin.api.openflow.device.RequestContext;
public Future<RpcResult<GetAggregateFlowStatisticsFromFlowTableForAllFlowsOutput>> getAggregateFlowStatisticsFromFlowTableForAllFlows(
final GetAggregateFlowStatisticsFromFlowTableForAllFlowsInput input) {
- final RequestContext<GetAggregateFlowStatisticsFromFlowTableForAllFlowsOutput> requestContext = rpcContext.createRequestContext();
- final SettableFuture<RpcResult<GetAggregateFlowStatisticsFromFlowTableForAllFlowsOutput>> result = rpcContext
- .storeOrFail(requestContext);
- if (!result.isDone()) {
- final Xid xid = deviceContext.getNextXid();
-
- // Create multipart request body for fetch all the group stats
- final MultipartRequestAggregateCaseBuilder multipartRequestAggregateCaseBuilder = new MultipartRequestAggregateCaseBuilder();
- final MultipartRequestAggregateBuilder mprAggregateRequestBuilder = new MultipartRequestAggregateBuilder();
- mprAggregateRequestBuilder.setTableId(input.getTableId().getValue());
- mprAggregateRequestBuilder.setOutPort(OFConstants.OFPP_ANY);
- mprAggregateRequestBuilder.setOutGroup(OFConstants.OFPG_ANY);
- mprAggregateRequestBuilder.setCookie(OFConstants.DEFAULT_COOKIE);
- mprAggregateRequestBuilder.setCookieMask(OFConstants.DEFAULT_COOKIE_MASK);
+ return this.<GetAggregateFlowStatisticsFromFlowTableForAllFlowsOutput, Void> handleServiceCall(
+ PRIMARY_CONNECTION, new Function<BigInteger, Future<RpcResult<Void>>>() {
- FlowCreatorUtil.setWildcardedFlowMatch(version, mprAggregateRequestBuilder);
+ @Override
+ public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
+ final Xid xid = deviceContext.getNextXid();
- // Set request body to main multipart request
- multipartRequestAggregateCaseBuilder.setMultipartRequestAggregate(mprAggregateRequestBuilder.build());
- final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
- MultipartType.OFPMPAGGREGATE, xid.getValue(), version);
+ // Create multipart request body for fetch all the group stats
+ final MultipartRequestAggregateCaseBuilder multipartRequestAggregateCaseBuilder = new MultipartRequestAggregateCaseBuilder();
+ final MultipartRequestAggregateBuilder mprAggregateRequestBuilder = new MultipartRequestAggregateBuilder();
+ mprAggregateRequestBuilder.setTableId(input.getTableId().getValue());
+ mprAggregateRequestBuilder.setOutPort(OFConstants.OFPP_ANY);
+ mprAggregateRequestBuilder.setOutGroup(OFConstants.OFPG_ANY);
+ mprAggregateRequestBuilder.setCookie(OFConstants.DEFAULT_COOKIE);
+ mprAggregateRequestBuilder.setCookieMask(OFConstants.DEFAULT_COOKIE_MASK);
- mprInput.setMultipartRequestBody(multipartRequestAggregateCaseBuilder.build());
+ FlowCreatorUtil.setWildcardedFlowMatch(version, mprAggregateRequestBuilder);
- final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
- .getConnectionAdapter().multipartRequest(mprInput.build());
+ // Set request body to main multipart request
+ multipartRequestAggregateCaseBuilder.setMultipartRequestAggregate(mprAggregateRequestBuilder
+ .build());
+ final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
+ MultipartType.OFPMPAGGREGATE, xid.getValue(), version);
- final ListenableFuture<RpcResult<Void>> futureResultFromOfLib = JdkFutureAdapters
- .listenInPoolThread(resultFromOFLib);
+ mprInput.setMultipartRequestBody(multipartRequestAggregateCaseBuilder.build());
- convertRpcResultToRequestFuture(requestContext, futureResultFromOfLib);
+ final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
+ .getConnectionAdapter().multipartRequest(mprInput.build());
- }
+ return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+ }
+ });
- return result;
}
@Override
public Future<RpcResult<GetAggregateFlowStatisticsFromFlowTableForGivenMatchOutput>> getAggregateFlowStatisticsFromFlowTableForGivenMatch(
final GetAggregateFlowStatisticsFromFlowTableForGivenMatchInput input) {
- final RequestContext<GetAggregateFlowStatisticsFromFlowTableForGivenMatchOutput> requestContext = rpcContext.createRequestContext();
- final SettableFuture<RpcResult<GetAggregateFlowStatisticsFromFlowTableForGivenMatchOutput>> result = rpcContext
- .storeOrFail(requestContext);
- if (!result.isDone()) {
- final Xid xid = deviceContext.getNextXid();
- final MultipartRequestAggregateCaseBuilder multipartRequestAggregateCaseBuilder = new MultipartRequestAggregateCaseBuilder();
- final MultipartRequestAggregateBuilder mprAggregateRequestBuilder = new MultipartRequestAggregateBuilder();
- mprAggregateRequestBuilder.setTableId(input.getTableId());
- mprAggregateRequestBuilder.setOutPort(input.getOutPort().longValue());
- // TODO: repeating code
- if (version == OFConstants.OFP_VERSION_1_3) {
- mprAggregateRequestBuilder.setCookie(input.getCookie().getValue());
- mprAggregateRequestBuilder.setCookieMask(input.getCookieMask().getValue());
- mprAggregateRequestBuilder.setOutGroup(input.getOutGroup());
- } else {
- mprAggregateRequestBuilder.setOutGroup(OFConstants.OFPG_ANY);
- mprAggregateRequestBuilder.setCookie(OFConstants.DEFAULT_COOKIE);
- mprAggregateRequestBuilder.setCookieMask(OFConstants.DEFAULT_COOKIE_MASK);
- }
-
- MatchReactor.getInstance().convert(input.getMatch(), version, mprAggregateRequestBuilder,
- deviceContext.getPrimaryConnectionContext().getFeatures().getDatapathId());
-
- FlowCreatorUtil.setWildcardedFlowMatch(version, mprAggregateRequestBuilder);
-
- // Set request body to main multipart request
- multipartRequestAggregateCaseBuilder.setMultipartRequestAggregate(mprAggregateRequestBuilder.build());
-
- final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
- MultipartType.OFPMPAGGREGATE, xid.getValue(), version);
-
- mprInput.setMultipartRequestBody(multipartRequestAggregateCaseBuilder.build());
- final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
- .getConnectionAdapter().multipartRequest(mprInput.build());
- final ListenableFuture<RpcResult<Void>> futureResultFromOfLib = JdkFutureAdapters
- .listenInPoolThread(resultFromOFLib);
-
- convertRpcResultToRequestFuture(requestContext, futureResultFromOfLib);
-
- }
- return result;
+ return this.<GetAggregateFlowStatisticsFromFlowTableForGivenMatchOutput, Void> handleServiceCall(
+ PRIMARY_CONNECTION, new Function<BigInteger, Future<RpcResult<Void>>>() {
+
+ @Override
+ public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
+ final Xid xid = deviceContext.getNextXid();
+ final MultipartRequestAggregateCaseBuilder multipartRequestAggregateCaseBuilder = new MultipartRequestAggregateCaseBuilder();
+ final MultipartRequestAggregateBuilder mprAggregateRequestBuilder = new MultipartRequestAggregateBuilder();
+ mprAggregateRequestBuilder.setTableId(input.getTableId());
+ mprAggregateRequestBuilder.setOutPort(input.getOutPort().longValue());
+ // TODO: repeating code
+ if (version == OFConstants.OFP_VERSION_1_3) {
+ mprAggregateRequestBuilder.setCookie(input.getCookie().getValue());
+ mprAggregateRequestBuilder.setCookieMask(input.getCookieMask().getValue());
+ mprAggregateRequestBuilder.setOutGroup(input.getOutGroup());
+ } else {
+ mprAggregateRequestBuilder.setOutGroup(OFConstants.OFPG_ANY);
+ mprAggregateRequestBuilder.setCookie(OFConstants.DEFAULT_COOKIE);
+ mprAggregateRequestBuilder.setCookieMask(OFConstants.DEFAULT_COOKIE_MASK);
+ }
+
+ MatchReactor.getInstance().convert(input.getMatch(), version, mprAggregateRequestBuilder,
+ deviceContext.getPrimaryConnectionContext().getFeatures().getDatapathId());
+
+ FlowCreatorUtil.setWildcardedFlowMatch(version, mprAggregateRequestBuilder);
+
+ // Set request body to main multipart request
+ multipartRequestAggregateCaseBuilder.setMultipartRequestAggregate(mprAggregateRequestBuilder
+ .build());
+
+ final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
+ MultipartType.OFPMPAGGREGATE, xid.getValue(), version);
+
+ mprInput.setMultipartRequestBody(multipartRequestAggregateCaseBuilder.build());
+ final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
+ .getConnectionAdapter().multipartRequest(mprInput.build());
+ return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+ }
+ });
+
}
@Override
public Future<RpcResult<GetAllFlowStatisticsFromFlowTableOutput>> getAllFlowStatisticsFromFlowTable(
final GetAllFlowStatisticsFromFlowTableInput input) {
-
- final RequestContext<GetAllFlowStatisticsFromFlowTableOutput> requestContext = rpcContext.createRequestContext();
- final SettableFuture<RpcResult<GetAllFlowStatisticsFromFlowTableOutput>> result = rpcContext
- .storeOrFail(requestContext);
- if (!result.isDone()) {
-
- final Xid xid = deviceContext.getNextXid();
-
- final MultipartRequestFlowBuilder mprFlowRequestBuilder = new MultipartRequestFlowBuilder();
- mprFlowRequestBuilder.setTableId(input.getTableId().getValue());
- mprFlowRequestBuilder.setOutPort(OFConstants.OFPP_ANY);
- mprFlowRequestBuilder.setOutGroup(OFConstants.OFPG_ANY);
- mprFlowRequestBuilder.setCookie(OFConstants.DEFAULT_COOKIE);
- mprFlowRequestBuilder.setCookieMask(OFConstants.DEFAULT_COOKIE_MASK);
- FlowCreatorUtil.setWildcardedFlowMatch(version, mprFlowRequestBuilder);
-
- final MultipartRequestFlowCaseBuilder multipartRequestFlowCaseBuilder = new MultipartRequestFlowCaseBuilder();
- multipartRequestFlowCaseBuilder.setMultipartRequestFlow(mprFlowRequestBuilder.build());
-
- final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
- MultipartType.OFPMPFLOW, xid.getValue(), version);
-
- mprInput.setMultipartRequestBody(multipartRequestFlowCaseBuilder.build());
- final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
- .getConnectionAdapter().multipartRequest(mprInput.build());
- final ListenableFuture<RpcResult<Void>> futureResultFromOfLib = JdkFutureAdapters
- .listenInPoolThread(resultFromOFLib);
-
- convertRpcResultToRequestFuture(requestContext, futureResultFromOfLib);
-
- }
- return result;
+ return this.<GetAllFlowStatisticsFromFlowTableOutput, Void> handleServiceCall(PRIMARY_CONNECTION,
+ new Function<BigInteger, Future<RpcResult<Void>>>() {
+
+ @Override
+ public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
+ final Xid xid = deviceContext.getNextXid();
+
+ final MultipartRequestFlowBuilder mprFlowRequestBuilder = new MultipartRequestFlowBuilder();
+ mprFlowRequestBuilder.setTableId(input.getTableId().getValue());
+ mprFlowRequestBuilder.setOutPort(OFConstants.OFPP_ANY);
+ mprFlowRequestBuilder.setOutGroup(OFConstants.OFPG_ANY);
+ mprFlowRequestBuilder.setCookie(OFConstants.DEFAULT_COOKIE);
+ mprFlowRequestBuilder.setCookieMask(OFConstants.DEFAULT_COOKIE_MASK);
+ FlowCreatorUtil.setWildcardedFlowMatch(version, mprFlowRequestBuilder);
+
+ final MultipartRequestFlowCaseBuilder multipartRequestFlowCaseBuilder = new MultipartRequestFlowCaseBuilder();
+ multipartRequestFlowCaseBuilder.setMultipartRequestFlow(mprFlowRequestBuilder.build());
+
+ final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
+ MultipartType.OFPMPFLOW, xid.getValue(), version);
+
+ mprInput.setMultipartRequestBody(multipartRequestFlowCaseBuilder.build());
+ final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
+ .getConnectionAdapter().multipartRequest(mprInput.build());
+ return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+ }
+ });
}
@Override
public Future<RpcResult<GetAllFlowsStatisticsFromAllFlowTablesOutput>> getAllFlowsStatisticsFromAllFlowTables(
final GetAllFlowsStatisticsFromAllFlowTablesInput input) {
-
- final RequestContext<GetAllFlowsStatisticsFromAllFlowTablesOutput> requestContext = rpcContext.createRequestContext();
- final SettableFuture<RpcResult<GetAllFlowsStatisticsFromAllFlowTablesOutput>> result = rpcContext
- .storeOrFail(requestContext);
- if (!result.isDone()) {
-
- final Xid xid = deviceContext.getNextXid();
-
- final MultipartRequestFlowCaseBuilder multipartRequestFlowCaseBuilder = new MultipartRequestFlowCaseBuilder();
- final MultipartRequestFlowBuilder mprFlowRequestBuilder = new MultipartRequestFlowBuilder();
- mprFlowRequestBuilder.setTableId(OFConstants.OFPTT_ALL);
- mprFlowRequestBuilder.setOutPort(OFConstants.OFPP_ANY);
- mprFlowRequestBuilder.setOutGroup(OFConstants.OFPG_ANY);
- mprFlowRequestBuilder.setCookie(OFConstants.DEFAULT_COOKIE);
- mprFlowRequestBuilder.setCookieMask(OFConstants.DEFAULT_COOKIE_MASK);
- FlowCreatorUtil.setWildcardedFlowMatch(version, mprFlowRequestBuilder);
-
- final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
- MultipartType.OFPMPFLOW, xid.getValue(), version);
-
- multipartRequestFlowCaseBuilder.setMultipartRequestFlow(mprFlowRequestBuilder.build());
- mprInput.setMultipartRequestBody(multipartRequestFlowCaseBuilder.build());
- final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
- .getConnectionAdapter().multipartRequest(mprInput.build());
- final ListenableFuture<RpcResult<Void>> futureResultFromOfLib = JdkFutureAdapters
- .listenInPoolThread(resultFromOFLib);
-
- convertRpcResultToRequestFuture(requestContext, futureResultFromOfLib);
- }
- return result;
+ return this.<GetAllFlowsStatisticsFromAllFlowTablesOutput, Void> handleServiceCall(PRIMARY_CONNECTION,
+ new Function<BigInteger, Future<RpcResult<Void>>>() {
+
+ @Override
+ public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
+ final Xid xid = deviceContext.getNextXid();
+
+ final MultipartRequestFlowCaseBuilder multipartRequestFlowCaseBuilder = new MultipartRequestFlowCaseBuilder();
+ final MultipartRequestFlowBuilder mprFlowRequestBuilder = new MultipartRequestFlowBuilder();
+ mprFlowRequestBuilder.setTableId(OFConstants.OFPTT_ALL);
+ mprFlowRequestBuilder.setOutPort(OFConstants.OFPP_ANY);
+ mprFlowRequestBuilder.setOutGroup(OFConstants.OFPG_ANY);
+ mprFlowRequestBuilder.setCookie(OFConstants.DEFAULT_COOKIE);
+ mprFlowRequestBuilder.setCookieMask(OFConstants.DEFAULT_COOKIE_MASK);
+ FlowCreatorUtil.setWildcardedFlowMatch(version, mprFlowRequestBuilder);
+
+ final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
+ MultipartType.OFPMPFLOW, xid.getValue(), version);
+
+ multipartRequestFlowCaseBuilder.setMultipartRequestFlow(mprFlowRequestBuilder.build());
+ mprInput.setMultipartRequestBody(multipartRequestFlowCaseBuilder.build());
+ final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
+ .getConnectionAdapter().multipartRequest(mprInput.build());
+ return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+ }
+ });
}
@Override
public Future<RpcResult<GetFlowStatisticsFromFlowTableOutput>> getFlowStatisticsFromFlowTable(
final GetFlowStatisticsFromFlowTableInput input) {
- final RequestContext<GetFlowStatisticsFromFlowTableOutput> requestContext = rpcContext.createRequestContext();
- final SettableFuture<RpcResult<GetFlowStatisticsFromFlowTableOutput>> result = rpcContext
- .storeOrFail(requestContext);
- if (!result.isDone()) {
- final Xid xid = deviceContext.getNextXid();
-
- final MultipartRequestFlowCaseBuilder multipartRequestFlowCaseBuilder = new MultipartRequestFlowCaseBuilder();
- final MultipartRequestFlowBuilder mprFlowRequestBuilder = new MultipartRequestFlowBuilder();
- mprFlowRequestBuilder.setTableId(input.getTableId());
-
- if (input.getOutPort() != null) {
- mprFlowRequestBuilder.setOutPort(input.getOutPort().longValue());
- } else {
- mprFlowRequestBuilder.setOutPort(OFConstants.OFPP_ANY);
- }
-
- if (input.getOutGroup() != null) {
- mprFlowRequestBuilder.setOutGroup(input.getOutGroup());
- } else {
- mprFlowRequestBuilder.setOutGroup(OFConstants.OFPG_ANY);
- }
-
- if (input.getCookie() != null) {
- mprFlowRequestBuilder.setCookie(input.getCookie().getValue());
- } else {
- mprFlowRequestBuilder.setCookie(OFConstants.DEFAULT_COOKIE);
- }
-
- if (input.getCookieMask() != null) {
- mprFlowRequestBuilder.setCookieMask(input.getCookieMask().getValue());
- } else {
- mprFlowRequestBuilder.setCookieMask(OFConstants.DEFAULT_COOKIE_MASK);
- }
-
- // convert and inject match
- MatchReactor.getInstance().convert(input.getMatch(), version, mprFlowRequestBuilder,
- deviceContext.getPrimaryConnectionContext().getFeatures().getDatapathId());
-
- // Set request body to main multipart request
- multipartRequestFlowCaseBuilder.setMultipartRequestFlow(mprFlowRequestBuilder.build());
- final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
- MultipartType.OFPMPFLOW, xid.getValue(), version);
- mprInput.setMultipartRequestBody(multipartRequestFlowCaseBuilder.build());
- final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
- .getConnectionAdapter().multipartRequest(mprInput.build());
- final ListenableFuture<RpcResult<Void>> futureResultFromOfLib = JdkFutureAdapters
- .listenInPoolThread(resultFromOFLib);
-
- convertRpcResultToRequestFuture(requestContext, futureResultFromOfLib);
-
- } else {
- RequestContextUtil.closeRequstContext(requestContext);
- }
- return result;
+ return this.<GetFlowStatisticsFromFlowTableOutput, Void> handleServiceCall(PRIMARY_CONNECTION,
+ new Function<BigInteger, Future<RpcResult<Void>>>() {
+
+ @Override
+ public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
+ final Xid xid = deviceContext.getNextXid();
+
+ final MultipartRequestFlowCaseBuilder multipartRequestFlowCaseBuilder = new MultipartRequestFlowCaseBuilder();
+ final MultipartRequestFlowBuilder mprFlowRequestBuilder = new MultipartRequestFlowBuilder();
+ mprFlowRequestBuilder.setTableId(input.getTableId());
+
+ if (input.getOutPort() != null) {
+ mprFlowRequestBuilder.setOutPort(input.getOutPort().longValue());
+ } else {
+ mprFlowRequestBuilder.setOutPort(OFConstants.OFPP_ANY);
+ }
+
+ if (input.getOutGroup() != null) {
+ mprFlowRequestBuilder.setOutGroup(input.getOutGroup());
+ } else {
+ mprFlowRequestBuilder.setOutGroup(OFConstants.OFPG_ANY);
+ }
+
+ if (input.getCookie() != null) {
+ mprFlowRequestBuilder.setCookie(input.getCookie().getValue());
+ } else {
+ mprFlowRequestBuilder.setCookie(OFConstants.DEFAULT_COOKIE);
+ }
+
+ if (input.getCookieMask() != null) {
+ mprFlowRequestBuilder.setCookieMask(input.getCookieMask().getValue());
+ } else {
+ mprFlowRequestBuilder.setCookieMask(OFConstants.DEFAULT_COOKIE_MASK);
+ }
+
+ // convert and inject match
+ MatchReactor.getInstance().convert(input.getMatch(), version, mprFlowRequestBuilder,
+ deviceContext.getPrimaryConnectionContext().getFeatures().getDatapathId());
+
+ // Set request body to main multipart request
+ multipartRequestFlowCaseBuilder.setMultipartRequestFlow(mprFlowRequestBuilder.build());
+ final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
+ MultipartType.OFPMPFLOW, xid.getValue(), version);
+ mprInput.setMultipartRequestBody(multipartRequestFlowCaseBuilder.build());
+ final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
+ .getConnectionAdapter().multipartRequest(mprInput.build());
+ return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+ }
+ });
}
private <T extends DataObject> void convertRpcResultToRequestFuture(final RequestContext<T> requestContext,
*/
package org.opendaylight.openflowplugin.impl.services;
+import com.google.common.base.Function;
+import java.math.BigInteger;
import com.google.common.util.concurrent.JdkFutureAdapters;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.SettableFuture;
import java.util.concurrent.Future;
-import org.opendaylight.openflowplugin.api.openflow.device.RequestContext;
import org.opendaylight.openflowplugin.api.openflow.device.Xid;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.GetFlowTablesStatisticsInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.GetFlowTablesStatisticsOutput;
@Override
public Future<RpcResult<GetFlowTablesStatisticsOutput>> getFlowTablesStatistics(
final GetFlowTablesStatisticsInput input) {
- final RequestContext<GetFlowTablesStatisticsOutput> requestContext = rpcContext.createRequestContext();
- final SettableFuture<RpcResult<GetFlowTablesStatisticsOutput>> result = rpcContext.storeOrFail(requestContext);
-
- if (!result.isDone()) {
-
- final Xid xid = deviceContext.getNextXid();
-
- // Create multipart request body for fetch all the group stats
- final MultipartRequestTableCaseBuilder multipartRequestTableCaseBuilder = new MultipartRequestTableCaseBuilder();
- final MultipartRequestTableBuilder multipartRequestTableBuilder = new MultipartRequestTableBuilder();
- multipartRequestTableBuilder.setEmpty(true);
- multipartRequestTableCaseBuilder.setMultipartRequestTable(multipartRequestTableBuilder.build());
-
- // Set request body to main multipart request
- final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
- MultipartType.OFPMPFLOW, xid.getValue(), version);
-
- mprInput.setMultipartRequestBody(multipartRequestTableCaseBuilder.build());
- final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
- .getConnectionAdapter().multipartRequest(mprInput.build());
-
- final ListenableFuture<RpcResult<Void>> futureResultFromOfLib = JdkFutureAdapters
- .listenInPoolThread(resultFromOFLib);
-
- RpcResultConvertor<GetFlowTablesStatisticsOutput> rpcResultConvertor = new RpcResultConvertor<>(requestContext, deviceContext);
- rpcResultConvertor.processResultFromOfJava(futureResultFromOfLib);
-
- } else {
- RequestContextUtil.closeRequstContext(requestContext);
- }
- return result;
+ return this.<GetFlowTablesStatisticsOutput, Void> handleServiceCall(PRIMARY_CONNECTION,
+ new Function<BigInteger, Future<RpcResult<Void>>>() {
+
+ @Override
+ public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
+ final Xid xid = deviceContext.getNextXid();
+
+ // Create multipart request body for fetch all the group stats
+ final MultipartRequestTableCaseBuilder multipartRequestTableCaseBuilder = new MultipartRequestTableCaseBuilder();
+ final MultipartRequestTableBuilder multipartRequestTableBuilder = new MultipartRequestTableBuilder();
+ multipartRequestTableBuilder.setEmpty(true);
+ multipartRequestTableCaseBuilder.setMultipartRequestTable(multipartRequestTableBuilder.build());
+
+ // Set request body to main multipart request
+ final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
+ MultipartType.OFPMPFLOW, xid.getValue(), version);
+
+ mprInput.setMultipartRequestBody(multipartRequestTableCaseBuilder.build());
+ final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
+ .getConnectionAdapter().multipartRequest(mprInput.build());
+
+ return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+ }
+ });
}
}
*/
package org.opendaylight.openflowplugin.impl.services;
+import com.google.common.base.Function;
+import java.math.BigInteger;
import com.google.common.util.concurrent.JdkFutureAdapters;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.SettableFuture;
import java.util.concurrent.Future;
import org.opendaylight.openflowjava.protocol.api.util.BinContent;
-import org.opendaylight.openflowplugin.api.openflow.device.RequestContext;
import org.opendaylight.openflowplugin.api.openflow.device.Xid;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetAllGroupStatisticsInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetAllGroupStatisticsOutput;
@Override
public Future<RpcResult<GetAllGroupStatisticsOutput>> getAllGroupStatistics(final GetAllGroupStatisticsInput input) {
+ return this.<GetAllGroupStatisticsOutput, Void> handleServiceCall(PRIMARY_CONNECTION,
+ new Function<BigInteger, Future<RpcResult<Void>>>() {
- final RequestContext<GetAllGroupStatisticsOutput> requestContext = rpcContext.createRequestContext();
- final SettableFuture<RpcResult<GetAllGroupStatisticsOutput>> result = rpcContext.storeOrFail(requestContext);
+ @Override
+ public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
+ final Xid xid = deviceContext.getNextXid();
- if (!result.isDone()) {
+ final MultipartRequestGroupCaseBuilder caseBuilder = new MultipartRequestGroupCaseBuilder();
+ final MultipartRequestGroupBuilder mprGroupBuild = new MultipartRequestGroupBuilder();
+ mprGroupBuild.setGroupId(new GroupId(
+ BinContent
+ .intToUnsignedLong(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.Group.OFPGALL
+ .getIntValue())));
+ caseBuilder.setMultipartRequestGroup(mprGroupBuild.build());
- final Xid xid = deviceContext.getNextXid();
+ // Create multipart request header
+ final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
+ MultipartType.OFPMPGROUP, xid.getValue(), version);
- final MultipartRequestGroupCaseBuilder caseBuilder = new MultipartRequestGroupCaseBuilder();
- final MultipartRequestGroupBuilder mprGroupBuild = new MultipartRequestGroupBuilder();
- mprGroupBuild
- .setGroupId(new GroupId(
- BinContent
- .intToUnsignedLong(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.Group.OFPGALL
- .getIntValue())));
- caseBuilder.setMultipartRequestGroup(mprGroupBuild.build());
+ // Set request body to main multipart request
+ mprInput.setMultipartRequestBody(caseBuilder.build());
- // Create multipart request header
- final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
- MultipartType.OFPMPGROUP, xid.getValue(), version);
+ // Send the request, no cookies associated, use any connection
- // Set request body to main multipart request
- mprInput.setMultipartRequestBody(caseBuilder.build());
+ final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
+ .getConnectionAdapter().multipartRequest(mprInput.build());
+ return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+ }
+ });
- // Send the request, no cookies associated, use any connection
-
- final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
- .getConnectionAdapter().multipartRequest(mprInput.build());
- final ListenableFuture<RpcResult<Void>> futureResultFromOfLib = JdkFutureAdapters
- .listenInPoolThread(resultFromOFLib);
-
- final RpcResultConvertor<GetAllGroupStatisticsOutput> rpcResultConvertor = new RpcResultConvertor<>(requestContext, deviceContext);
- rpcResultConvertor.processResultFromOfJava(futureResultFromOfLib);
-
- } else {
- RequestContextUtil.closeRequstContext(requestContext);
- }
- return result;
}
@Override
public Future<RpcResult<GetGroupDescriptionOutput>> getGroupDescription(final GetGroupDescriptionInput input) {
+ return this.<GetGroupDescriptionOutput, Void> handleServiceCall(PRIMARY_CONNECTION,
+ new Function<BigInteger, Future<RpcResult<Void>>>() {
+
+ @Override
+ public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
+ final Xid xid = deviceContext.getNextXid();
+ final MultipartRequestGroupDescCaseBuilder mprGroupDescCaseBuild = new MultipartRequestGroupDescCaseBuilder();
+ final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
+ MultipartType.OFPMPGROUPDESC, xid.getValue(), version);
+ mprInput.setMultipartRequestBody(mprGroupDescCaseBuild.build());
+ final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
+ .getConnectionAdapter().multipartRequest(mprInput.build());
+ return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+ }
+ });
- final RequestContext<GetGroupDescriptionOutput> requestContext = rpcContext.createRequestContext();
- final SettableFuture<RpcResult<GetGroupDescriptionOutput>> result = rpcContext.storeOrFail(requestContext);
-
- if (!result.isDone()) {
-
- final Xid xid = deviceContext.getNextXid();
- final MultipartRequestGroupDescCaseBuilder mprGroupDescCaseBuild = new MultipartRequestGroupDescCaseBuilder();
- final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
- MultipartType.OFPMPGROUPDESC, xid.getValue(), version);
- mprInput.setMultipartRequestBody(mprGroupDescCaseBuild.build());
- final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
- .getConnectionAdapter().multipartRequest(mprInput.build());
- final ListenableFuture<RpcResult<Void>> futureResultFromOfLib = JdkFutureAdapters
- .listenInPoolThread(resultFromOFLib);
-
- final RpcResultConvertor<GetGroupDescriptionOutput> rpcResultConvertor = new RpcResultConvertor<>(requestContext, deviceContext);
- rpcResultConvertor.processResultFromOfJava(futureResultFromOfLib);
- } else {
- RequestContextUtil.closeRequstContext(requestContext);
- }
- return result;
}
@Override
public Future<RpcResult<GetGroupFeaturesOutput>> getGroupFeatures(final GetGroupFeaturesInput input) {
+ return this.<GetGroupFeaturesOutput, Void> handleServiceCall(PRIMARY_CONNECTION,
+ new Function<BigInteger, Future<RpcResult<Void>>>() {
+
+ @Override
+ public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
+ final Xid xid = deviceContext.getNextXid();
+
+ final MultipartRequestGroupFeaturesCaseBuilder mprGroupFeaturesBuild = new MultipartRequestGroupFeaturesCaseBuilder();
+ final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
+ MultipartType.OFPMPGROUPFEATURES, xid.getValue(), version);
+ mprInput.setMultipartRequestBody(mprGroupFeaturesBuild.build());
+ final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
+ .getConnectionAdapter().multipartRequest(mprInput.build());
+ return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+ }
+ });
- final RequestContext<GetGroupFeaturesOutput> requestContext = rpcContext.createRequestContext();
- final SettableFuture<RpcResult<GetGroupFeaturesOutput>> result = rpcContext.storeOrFail(requestContext);
-
- if (!result.isDone()) {
-
- final Xid xid = deviceContext.getNextXid();
-
- final MultipartRequestGroupFeaturesCaseBuilder mprGroupFeaturesBuild = new MultipartRequestGroupFeaturesCaseBuilder();
- final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
- MultipartType.OFPMPGROUPFEATURES, xid.getValue(), version);
- mprInput.setMultipartRequestBody(mprGroupFeaturesBuild.build());
- final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
- .getConnectionAdapter().multipartRequest(mprInput.build());
- final ListenableFuture<RpcResult<Void>> futureResultFromOfLib = JdkFutureAdapters
- .listenInPoolThread(resultFromOFLib);
-
- final RpcResultConvertor<GetGroupFeaturesOutput> rpcResultConvertor = new RpcResultConvertor<>(requestContext, deviceContext);
- rpcResultConvertor.processResultFromOfJava(futureResultFromOfLib);
- } else {
- RequestContextUtil.closeRequstContext(requestContext);
- }
- return result;
}
@Override
public Future<RpcResult<GetGroupStatisticsOutput>> getGroupStatistics(final GetGroupStatisticsInput input) {
-
- final RequestContext<GetGroupStatisticsOutput> requestContext = rpcContext.createRequestContext();
- final SettableFuture<RpcResult<GetGroupStatisticsOutput>> result = rpcContext.storeOrFail(requestContext);
-
- if (!result.isDone()) {
-
- final Xid xid = deviceContext.getNextXid();
-
- final MultipartRequestGroupCaseBuilder caseBuilder = new MultipartRequestGroupCaseBuilder();
- final MultipartRequestGroupBuilder mprGroupBuild = new MultipartRequestGroupBuilder();
- mprGroupBuild.setGroupId(new GroupId(input.getGroupId().getValue()));
- caseBuilder.setMultipartRequestGroup(mprGroupBuild.build());
-
- final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
- MultipartType.OFPMPGROUP, xid.getValue(), version);
-
- mprInput.setMultipartRequestBody(caseBuilder.build());
- final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
- .getConnectionAdapter().multipartRequest(mprInput.build());
- final ListenableFuture<RpcResult<Void>> futureResultFromOfLib = JdkFutureAdapters
- .listenInPoolThread(resultFromOFLib);
-
- final RpcResultConvertor<GetGroupStatisticsOutput> rpcResultConvertor = new RpcResultConvertor<>(requestContext, deviceContext);
- rpcResultConvertor.processResultFromOfJava(futureResultFromOfLib);
- } else {
- RequestContextUtil.closeRequstContext(requestContext);
- }
- return result;
+ return this.<GetGroupStatisticsOutput, Void> handleServiceCall(PRIMARY_CONNECTION,
+ new Function<BigInteger, Future<RpcResult<Void>>>() {
+
+ @Override
+ public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
+ final Xid xid = deviceContext.getNextXid();
+
+ final MultipartRequestGroupCaseBuilder caseBuilder = new MultipartRequestGroupCaseBuilder();
+ final MultipartRequestGroupBuilder mprGroupBuild = new MultipartRequestGroupBuilder();
+ mprGroupBuild.setGroupId(new GroupId(input.getGroupId().getValue()));
+ caseBuilder.setMultipartRequestGroup(mprGroupBuild.build());
+
+ final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
+ MultipartType.OFPMPGROUP, xid.getValue(), version);
+
+ mprInput.setMultipartRequestBody(caseBuilder.build());
+ final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
+ .getConnectionAdapter().multipartRequest(mprInput.build());
+ return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+ }
+ });
}
}
*/
package org.opendaylight.openflowplugin.impl.services;
+import com.google.common.base.Function;
+import java.math.BigInteger;
import com.google.common.util.concurrent.JdkFutureAdapters;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.SettableFuture;
@Override
public Future<RpcResult<GetAllMeterConfigStatisticsOutput>> getAllMeterConfigStatistics(
final GetAllMeterConfigStatisticsInput input) {
+ return this
+ .<GetAllMeterConfigStatisticsOutput, Void> handleServiceCall(
+ PRIMARY_CONNECTION, new Function<BigInteger, Future<RpcResult<Void>>>() {
+
+ @Override
+ public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
+ final Xid xid = deviceContext.getNextXid();
+
+ MultipartRequestMeterConfigCaseBuilder caseBuilder =
+ new MultipartRequestMeterConfigCaseBuilder();
+ MultipartRequestMeterConfigBuilder mprMeterConfigBuild =
+ new MultipartRequestMeterConfigBuilder();
+ mprMeterConfigBuild.setMeterId(new MeterId(BinContent.intToUnsignedLong(
+ org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common
+ .types.rev130731.Meter.OFPMALL.getIntValue())));
+ caseBuilder.setMultipartRequestMeterConfig(mprMeterConfigBuild.build());
+
+ MultipartRequestInputBuilder mprInput = RequestInputUtils
+ .createMultipartHeader(MultipartType.OFPMPMETERCONFIG, xid.getValue(), version);
+ mprInput.setMultipartRequestBody(caseBuilder.build());
+ Future<RpcResult<Void>> resultFromOFLib = deviceContext
+ .getPrimaryConnectionContext().getConnectionAdapter().multipartRequest(mprInput.build());
+ return JdkFutureAdapters
+ .listenInPoolThread(resultFromOFLib);
+ }});
- final RequestContext<GetAllMeterConfigStatisticsOutput> requestContext = rpcContext.createRequestContext();
- final SettableFuture<RpcResult<GetAllMeterConfigStatisticsOutput>> result = rpcContext.storeOrFail(requestContext);
-
- if (!result.isDone()) {
-
- final Xid xid = deviceContext.getNextXid();
-
- MultipartRequestMeterConfigCaseBuilder caseBuilder =
- new MultipartRequestMeterConfigCaseBuilder();
- MultipartRequestMeterConfigBuilder mprMeterConfigBuild =
- new MultipartRequestMeterConfigBuilder();
- mprMeterConfigBuild.setMeterId(new MeterId(BinContent.intToUnsignedLong(
- org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common
- .types.rev130731.Meter.OFPMALL.getIntValue())));
- caseBuilder.setMultipartRequestMeterConfig(mprMeterConfigBuild.build());
-
- MultipartRequestInputBuilder mprInput = RequestInputUtils
- .createMultipartHeader(MultipartType.OFPMPMETERCONFIG, xid.getValue(), version);
- mprInput.setMultipartRequestBody(caseBuilder.build());
- Future<RpcResult<Void>> resultFromOFLib = deviceContext
- .getPrimaryConnectionContext().getConnectionAdapter().multipartRequest(mprInput.build());
- ListenableFuture<RpcResult<Void>> futureResultFromOfLib = JdkFutureAdapters
- .listenInPoolThread(resultFromOFLib);
-
- final RpcResultConvertor<GetAllMeterConfigStatisticsOutput> rpcResultConvertor = new RpcResultConvertor<>(requestContext, deviceContext);
- rpcResultConvertor.processResultFromOfJava(futureResultFromOfLib);
-
- } else {
- RequestContextUtil.closeRequstContext(requestContext);
- }
- return result;
}
@Override
*/
package org.opendaylight.openflowplugin.impl.services;
+import com.google.common.base.Function;
+import java.math.BigInteger;
import com.google.common.util.concurrent.JdkFutureAdapters;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.SettableFuture;
import org.opendaylight.openflowplugin.api.OFConstants;
-import org.opendaylight.openflowplugin.api.openflow.device.RequestContext;
import org.opendaylight.openflowplugin.api.openflow.device.Xid;
import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion;
import org.opendaylight.openflowplugin.openflow.md.util.InventoryDataServiceUtil;
@Override
public Future<RpcResult<GetAllNodeConnectorsStatisticsOutput>> getAllNodeConnectorsStatistics(
final GetAllNodeConnectorsStatisticsInput input) {
- final RequestContext<GetAllNodeConnectorsStatisticsOutput> requestContext = rpcContext.createRequestContext();
- final SettableFuture<RpcResult<GetAllNodeConnectorsStatisticsOutput>> result = rpcContext.storeOrFail(requestContext);
+ return this
+ .<GetAllNodeConnectorsStatisticsOutput, Void> handleServiceCall(
+ PRIMARY_CONNECTION, new Function<BigInteger, Future<RpcResult<Void>>>() {
- if (!result.isDone()) {
+ @Override
+ public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
+ final Xid xid = deviceContext.getNextXid();
- final Xid xid = deviceContext.getNextXid();
+ MultipartRequestPortStatsCaseBuilder caseBuilder =
+ new MultipartRequestPortStatsCaseBuilder();
+ MultipartRequestPortStatsBuilder mprPortStatsBuilder =
+ new MultipartRequestPortStatsBuilder();
+ // Select all ports
+ mprPortStatsBuilder.setPortNo(OFConstants.OFPP_ANY);
+ caseBuilder.setMultipartRequestPortStats(mprPortStatsBuilder.build());
- MultipartRequestPortStatsCaseBuilder caseBuilder =
- new MultipartRequestPortStatsCaseBuilder();
- MultipartRequestPortStatsBuilder mprPortStatsBuilder =
- new MultipartRequestPortStatsBuilder();
- // Select all ports
- mprPortStatsBuilder.setPortNo(OFConstants.OFPP_ANY);
- caseBuilder.setMultipartRequestPortStats(mprPortStatsBuilder.build());
-
- MultipartRequestInputBuilder mprInput = RequestInputUtils
- .createMultipartHeader(MultipartType.OFPMPPORTSTATS, xid.getValue(), version);
- mprInput.setMultipartRequestBody(caseBuilder.build());
- Future<RpcResult<Void>> resultFromOFLib = deviceContext
- .getPrimaryConnectionContext().getConnectionAdapter().multipartRequest(mprInput.build());
- ListenableFuture<RpcResult<Void>> futureResultFromOfLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
-
- final RpcResultConvertor<GetAllNodeConnectorsStatisticsOutput> rpcResultConvertor = new RpcResultConvertor<>(requestContext, deviceContext);
- rpcResultConvertor.<Void>processResultFromOfJava(futureResultFromOfLib);
-
- } else {
- RequestContextUtil.closeRequstContext(requestContext);
- }
- return result;
+ MultipartRequestInputBuilder mprInput = RequestInputUtils
+ .createMultipartHeader(MultipartType.OFPMPPORTSTATS, xid.getValue(), version);
+ mprInput.setMultipartRequestBody(caseBuilder.build());
+ Future<RpcResult<Void>> resultFromOFLib = deviceContext
+ .getPrimaryConnectionContext().getConnectionAdapter().multipartRequest(mprInput.build());
+ return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+ }});
}
@Override
public Future<RpcResult<GetNodeConnectorStatisticsOutput>> getNodeConnectorStatistics(
final GetNodeConnectorStatisticsInput input) {
- final RequestContext<GetNodeConnectorStatisticsOutput> requestContext = rpcContext.createRequestContext();
- final SettableFuture<RpcResult<GetNodeConnectorStatisticsOutput>> result = rpcContext.storeOrFail(requestContext);
+ return this
+ .<GetNodeConnectorStatisticsOutput, Void> handleServiceCall(
+ PRIMARY_CONNECTION, new Function<BigInteger, Future<RpcResult<Void>>>() {
- if (!result.isDone()) {
- final Xid xid = deviceContext.getNextXid();
+ @Override
+ public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
+ final Xid xid = deviceContext.getNextXid();
- MultipartRequestPortStatsCaseBuilder caseBuilder =
- new MultipartRequestPortStatsCaseBuilder();
- MultipartRequestPortStatsBuilder mprPortStatsBuilder =
- new MultipartRequestPortStatsBuilder();
- // Set specific port
- mprPortStatsBuilder
- .setPortNo(InventoryDataServiceUtil.portNumberfromNodeConnectorId(
- OpenflowVersion.get(version),
- input.getNodeConnectorId()));
- caseBuilder.setMultipartRequestPortStats(mprPortStatsBuilder.build());
+ MultipartRequestPortStatsCaseBuilder caseBuilder =
+ new MultipartRequestPortStatsCaseBuilder();
+ MultipartRequestPortStatsBuilder mprPortStatsBuilder =
+ new MultipartRequestPortStatsBuilder();
+ // Set specific port
+ mprPortStatsBuilder
+ .setPortNo(InventoryDataServiceUtil.portNumberfromNodeConnectorId(
+ OpenflowVersion.get(version),
+ input.getNodeConnectorId()));
+ caseBuilder.setMultipartRequestPortStats(mprPortStatsBuilder.build());
- MultipartRequestInputBuilder mprInput = RequestInputUtils
- .createMultipartHeader(MultipartType.OFPMPPORTSTATS, xid.getValue(), version);
- mprInput.setMultipartRequestBody(caseBuilder.build());
- Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
- .getConnectionAdapter().multipartRequest(mprInput.build());
- ListenableFuture<RpcResult<Void>> futureResultFromOfLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+ MultipartRequestInputBuilder mprInput = RequestInputUtils
+ .createMultipartHeader(MultipartType.OFPMPPORTSTATS, xid.getValue(), version);
+ mprInput.setMultipartRequestBody(caseBuilder.build());
+ Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
+ .getConnectionAdapter().multipartRequest(mprInput.build());
+ return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+ }});
- final RpcResultConvertor<GetNodeConnectorStatisticsOutput> rpcResultConvertor = new RpcResultConvertor<>(requestContext, deviceContext);
- rpcResultConvertor.processResultFromOfJava(futureResultFromOfLib);
- } else {
- RequestContextUtil.closeRequstContext(requestContext);
- }
- return result;
}
}
*/
package org.opendaylight.openflowplugin.impl.services;
+import com.google.common.base.Function;
+import java.math.BigInteger;
import com.google.common.util.concurrent.JdkFutureAdapters;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.SettableFuture;
import org.opendaylight.openflowplugin.api.OFConstants;
-import org.opendaylight.openflowplugin.api.openflow.device.RequestContext;
import org.opendaylight.openflowplugin.api.openflow.device.Xid;
import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion;
import org.opendaylight.openflowplugin.openflow.md.util.InventoryDataServiceUtil;
*/
public class OpendaylightQueueStatisticsServiceImpl extends CommonService implements OpendaylightQueueStatisticsService {
-
@Override
public Future<RpcResult<GetAllQueuesStatisticsFromAllPortsOutput>> getAllQueuesStatisticsFromAllPorts(
final GetAllQueuesStatisticsFromAllPortsInput input) {
- final RequestContext<GetAllQueuesStatisticsFromAllPortsOutput> requestContext = rpcContext.createRequestContext();
- final SettableFuture<RpcResult<GetAllQueuesStatisticsFromAllPortsOutput>> result = rpcContext.storeOrFail(requestContext);
-
- if (!result.isDone()) {
- final Xid xid = deviceContext.getNextXid();
-
- MultipartRequestQueueCaseBuilder caseBuilder = new MultipartRequestQueueCaseBuilder();
- MultipartRequestQueueBuilder mprQueueBuilder = new MultipartRequestQueueBuilder();
- // Select all ports
- mprQueueBuilder.setPortNo(OFConstants.OFPP_ANY);
- // Select all the ports
- mprQueueBuilder.setQueueId(OFConstants.OFPQ_ANY);
- caseBuilder.setMultipartRequestQueue(mprQueueBuilder.build());
-
- // Set request body to main multipart request
- MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(MultipartType.OFPMPQUEUE, xid.getValue(), version);
- mprInput.setMultipartRequestBody(caseBuilder.build());
- Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext().getConnectionAdapter().multipartRequest(mprInput.build());
- ListenableFuture<RpcResult<Void>> futureResultFromOfLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
-
- final RpcResultConvertor<GetAllQueuesStatisticsFromAllPortsOutput> rpcResultConvertor = new RpcResultConvertor<>(requestContext, deviceContext);
- rpcResultConvertor.processResultFromOfJava(futureResultFromOfLib);
- } else {
- RequestContextUtil.closeRequstContext(requestContext);
- }
- return result;
+ return this.<GetAllQueuesStatisticsFromAllPortsOutput, Void> handleServiceCall(
+ PRIMARY_CONNECTION, new Function<BigInteger, Future<RpcResult<Void>>>() {
+
+ @Override
+ public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
+
+ final Xid xid = deviceContext.getNextXid();
+
+ MultipartRequestQueueCaseBuilder caseBuilder = new MultipartRequestQueueCaseBuilder();
+ MultipartRequestQueueBuilder mprQueueBuilder = new MultipartRequestQueueBuilder();
+ // Select all ports
+ mprQueueBuilder.setPortNo(OFConstants.OFPP_ANY);
+ // Select all the ports
+ mprQueueBuilder.setQueueId(OFConstants.OFPQ_ANY);
+ caseBuilder.setMultipartRequestQueue(mprQueueBuilder.build());
+
+ // Set request body to main multipart request
+ MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
+ MultipartType.OFPMPQUEUE, xid.getValue(), version);
+ mprInput.setMultipartRequestBody(caseBuilder.build());
+ Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
+ .getConnectionAdapter().multipartRequest(mprInput.build());
+ return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+ }
+ });
+
}
@Override
public Future<RpcResult<GetAllQueuesStatisticsFromGivenPortOutput>> getAllQueuesStatisticsFromGivenPort(
final GetAllQueuesStatisticsFromGivenPortInput input) {
- final RequestContext<GetAllQueuesStatisticsFromGivenPortOutput> requestContext = rpcContext.createRequestContext();
- final SettableFuture<RpcResult<GetAllQueuesStatisticsFromGivenPortOutput>> result = rpcContext.storeOrFail(requestContext);
-
- if (!result.isDone()) {
- final Xid xid = deviceContext.getNextXid();
-
-
- MultipartRequestQueueCaseBuilder caseBuilder = new MultipartRequestQueueCaseBuilder();
- MultipartRequestQueueBuilder mprQueueBuilder = new MultipartRequestQueueBuilder();
- // Select all queues
- mprQueueBuilder.setQueueId(OFConstants.OFPQ_ANY);
- // Select specific port
- mprQueueBuilder.setPortNo(InventoryDataServiceUtil.portNumberfromNodeConnectorId(
- OpenflowVersion.get(version),
- input.getNodeConnectorId()));
- caseBuilder.setMultipartRequestQueue(mprQueueBuilder.build());
-
- // Set request body to main multipart request
- MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(MultipartType.OFPMPQUEUE, xid.getValue(), version);
- mprInput.setMultipartRequestBody(caseBuilder.build());
- Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext().getConnectionAdapter().multipartRequest(mprInput.build());
- ListenableFuture<RpcResult<Void>> futureResultFromOfLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
-
- final RpcResultConvertor<GetAllQueuesStatisticsFromGivenPortOutput> rpcResultConvertor = new RpcResultConvertor<>(requestContext, deviceContext);
- rpcResultConvertor.processResultFromOfJava(futureResultFromOfLib);
- } else {
- RequestContextUtil.closeRequstContext(requestContext);
- }
- return result;
+ return this.<GetAllQueuesStatisticsFromGivenPortOutput, Void> handleServiceCall(
+ PRIMARY_CONNECTION, new Function<BigInteger, Future<RpcResult<Void>>>() {
+
+ @Override
+ public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
+ final Xid xid = deviceContext.getNextXid();
+
+ MultipartRequestQueueCaseBuilder caseBuilder = new MultipartRequestQueueCaseBuilder();
+ MultipartRequestQueueBuilder mprQueueBuilder = new MultipartRequestQueueBuilder();
+ // Select all queues
+ mprQueueBuilder.setQueueId(OFConstants.OFPQ_ANY);
+ // Select specific port
+ mprQueueBuilder.setPortNo(InventoryDataServiceUtil.portNumberfromNodeConnectorId(
+ OpenflowVersion.get(version), input.getNodeConnectorId()));
+ caseBuilder.setMultipartRequestQueue(mprQueueBuilder.build());
+
+ // Set request body to main multipart request
+ MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
+ MultipartType.OFPMPQUEUE, xid.getValue(), version);
+ mprInput.setMultipartRequestBody(caseBuilder.build());
+ Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
+ .getConnectionAdapter().multipartRequest(mprInput.build());
+ return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+
+ }
+ });
}
@Override
public Future<RpcResult<GetQueueStatisticsFromGivenPortOutput>> getQueueStatisticsFromGivenPort(
final GetQueueStatisticsFromGivenPortInput input) {
- final RequestContext<GetQueueStatisticsFromGivenPortOutput> requestContext = rpcContext.createRequestContext();
- final SettableFuture<RpcResult<GetQueueStatisticsFromGivenPortOutput>> result = rpcContext.storeOrFail(requestContext);
-
- if (!result.isDone()) {
- final Xid xid = deviceContext.getNextXid();
-
- MultipartRequestQueueCaseBuilder caseBuilder = new MultipartRequestQueueCaseBuilder();
- MultipartRequestQueueBuilder mprQueueBuilder = new MultipartRequestQueueBuilder();
- // Select specific queue
- mprQueueBuilder.setQueueId(input.getQueueId().getValue());
- // Select specific port
- mprQueueBuilder.setPortNo(InventoryDataServiceUtil.portNumberfromNodeConnectorId(
- OpenflowVersion.get(version),
- input.getNodeConnectorId()));
- caseBuilder.setMultipartRequestQueue(mprQueueBuilder.build());
-
- // Set request body to main multipart request
- MultipartRequestInputBuilder mprInput = RequestInputUtils
- .createMultipartHeader(MultipartType.OFPMPQUEUE, xid.getValue(), version);
- mprInput.setMultipartRequestBody(caseBuilder.build());
- Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
- .getConnectionAdapter().multipartRequest(mprInput.build());
- ListenableFuture<RpcResult<Void>> futureResultFromOfLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
-
- final RpcResultConvertor<GetQueueStatisticsFromGivenPortOutput> rpcResultConvertor = new RpcResultConvertor<>(requestContext, deviceContext);
- rpcResultConvertor.processResultFromOfJava(futureResultFromOfLib);
- } else {
- RequestContextUtil.closeRequstContext(requestContext);
- }
- return result;
+ return this.<GetQueueStatisticsFromGivenPortOutput, Void> handleServiceCall(
+ PRIMARY_CONNECTION, new Function<BigInteger, Future<RpcResult<Void>>>() {
+
+ @Override
+ public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
+ final Xid xid = deviceContext.getNextXid();
+
+ MultipartRequestQueueCaseBuilder caseBuilder = new MultipartRequestQueueCaseBuilder();
+ MultipartRequestQueueBuilder mprQueueBuilder = new MultipartRequestQueueBuilder();
+ // Select specific queue
+ mprQueueBuilder.setQueueId(input.getQueueId().getValue());
+ // Select specific port
+ mprQueueBuilder.setPortNo(InventoryDataServiceUtil.portNumberfromNodeConnectorId(
+ OpenflowVersion.get(version), input.getNodeConnectorId()));
+ caseBuilder.setMultipartRequestQueue(mprQueueBuilder.build());
+
+ // Set request body to main multipart request
+ MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
+ MultipartType.OFPMPQUEUE, xid.getValue(), version);
+ mprInput.setMultipartRequestBody(caseBuilder.build());
+ Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
+ .getConnectionAdapter().multipartRequest(mprInput.build());
+ return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+ }
+ });
}
}
/**
* Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
- *
+ *
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
public class PacketProcessingServiceImpl extends CommonService implements PacketProcessingService {
@Override
+ //TODO this implementation is incorrect. Handling of exceptional states as in ServiceCallProcessingUtil.handleServiceCall() is missing
public Future<RpcResult<Void>> transmitPacket(final TransmitPacketInput input) {
final PacketOutInput message = PacketOutConvertor.toPacketOutInput(input, version, deviceContext.getNextXid()
.getValue(), datapathId);
@Override
public Future<RpcResult<AddFlowOutput>> addFlow(final AddFlowInput input) {
- return ServiceCallProcessingUtil.<AddFlowOutput, Void> handleServiceCall(rpcContext, PRIMARY_CONNECTION, deviceContext,
- new Function<BigInteger,Future<RpcResult<Void>>>() {
+ return this.<AddFlowOutput, Void> handleServiceCall(PRIMARY_CONNECTION,
+ new Function<BigInteger, Future<RpcResult<Void>>>() {
@Override
public ListenableFuture<RpcResult<Void>> apply(final BigInteger IDConnection) {
final List<FlowModInputBuilder> ofFlowModInputs = FlowConvertor.toFlowModInputs(input, version,
@Override
public Future<RpcResult<RemoveFlowOutput>> removeFlow(final RemoveFlowInput input) {
- return ServiceCallProcessingUtil.<RemoveFlowOutput, Void> handleServiceCall(rpcContext, PRIMARY_CONNECTION, deviceContext,
- new Function<BigInteger,Future<RpcResult<Void>>>() {
+ return this.<RemoveFlowOutput, Void> handleServiceCall(PRIMARY_CONNECTION,
+ new Function<BigInteger, Future<RpcResult<Void>>>() {
@Override
public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
final FlowModInputBuilder ofFlowModInput = FlowConvertor.toFlowModInput(input, version,
allFlowMods.addAll(ofFlowModInputs);
LOG.debug("Number of flows to push to switch: {}", allFlowMods.size());
Collections.<String> emptyList();
- return ServiceCallProcessingUtil.<UpdateFlowOutput, Void> handleServiceCall(rpcContext, PRIMARY_CONNECTION, deviceContext,
- new Function<BigInteger,Future<RpcResult<Void>>>() {
+ return this.<UpdateFlowOutput, Void> handleServiceCall(PRIMARY_CONNECTION,
+ new Function<BigInteger, Future<RpcResult<Void>>>() {
@Override
public Future<RpcResult<Void>> apply(final BigInteger cookie) {
return chainFlowMods(allFlowMods, 0, cookie);
@Override
public Future<RpcResult<AddGroupOutput>> addGroup(final AddGroupInput input) {
- return ServiceCallProcessingUtil.<AddGroupOutput, Void> handleServiceCall(rpcContext, PRIMARY_CONNECTION,
- deviceContext, new Function<BigInteger,Future<RpcResult<Void>>>() {
+ return this.<AddGroupOutput, Void> handleServiceCall( PRIMARY_CONNECTION,
+ new Function<BigInteger,Future<RpcResult<Void>>>() {
@Override
public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
@Override
public Future<RpcResult<UpdateGroupOutput>> updateGroup(final UpdateGroupInput input) {
- return ServiceCallProcessingUtil.<UpdateGroupOutput, Void> handleServiceCall(rpcContext, PRIMARY_CONNECTION,
- deviceContext, new Function<BigInteger,Future<RpcResult<Void>>>() {
+ return this.<UpdateGroupOutput, Void> handleServiceCall(PRIMARY_CONNECTION,
+ new Function<BigInteger, Future<RpcResult<Void>>>() {
@Override
public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
@Override
public Future<RpcResult<RemoveGroupOutput>> removeGroup(final RemoveGroupInput input) {
- return ServiceCallProcessingUtil.<RemoveGroupOutput, Void> handleServiceCall(rpcContext, PRIMARY_CONNECTION,
- deviceContext, new Function<BigInteger,Future<RpcResult<Void>>>() {
+ return this.<RemoveGroupOutput, Void> handleServiceCall(PRIMARY_CONNECTION,
+ new Function<BigInteger, Future<RpcResult<Void>>>() {
@Override
public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
@Override
public Future<RpcResult<AddMeterOutput>> addMeter(final AddMeterInput input) {
- return ServiceCallProcessingUtil.<AddMeterOutput, Void>handleServiceCall(rpcContext, PRIMARY_CONNECTION,
- deviceContext, new Function<BigInteger,Future<RpcResult<Void>>>() {
+ return this.<AddMeterOutput, Void>handleServiceCall( PRIMARY_CONNECTION,
+ new Function<BigInteger,Future<RpcResult<Void>>>() {
@Override
public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
return convertAndSend(input, IDConnection);
@Override
public Future<RpcResult<UpdateMeterOutput>> updateMeter(final UpdateMeterInput input) {
- return ServiceCallProcessingUtil.<UpdateMeterOutput, Void>handleServiceCall(rpcContext, PRIMARY_CONNECTION,
- deviceContext, new Function<BigInteger,Future<RpcResult<Void>>>() {
+ return this.<UpdateMeterOutput, Void>handleServiceCall( PRIMARY_CONNECTION,
+ new Function<BigInteger,Future<RpcResult<Void>>>() {
@Override
public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
return convertAndSend(input.getUpdatedMeter(), IDConnection);
@Override
public Future<RpcResult<RemoveMeterOutput>> removeMeter(final RemoveMeterInput input) {
- return ServiceCallProcessingUtil.<RemoveMeterOutput, Void>handleServiceCall(rpcContext, PRIMARY_CONNECTION,
- deviceContext, new Function<BigInteger,Future<RpcResult<Void>>>() {
+ return this.<RemoveMeterOutput, Void>handleServiceCall( PRIMARY_CONNECTION,
+ new Function<BigInteger,Future<RpcResult<Void>>>() {
@Override
public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
return convertAndSend(input, IDConnection);
@Override
public Future<RpcResult<UpdatePortOutput>> updatePort(final UpdatePortInput input) {
- return ServiceCallProcessingUtil.<UpdatePortOutput, Void>handleServiceCall(rpcContext, PRIMARY_CONNECTION,
- deviceContext, new Function<BigInteger,Future<RpcResult<Void>>>() {
+ return this.<UpdatePortOutput, Void> handleServiceCall(PRIMARY_CONNECTION,
+ new Function<BigInteger, Future<RpcResult<Void>>>() {
@Override
public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
final Port inputPort = input.getUpdatedPort().getPort().getPort().get(0);
}
}
- return ServiceCallProcessingUtil.<UpdateTableOutput, UpdateTableOutput>handleServiceCall(rpcContext, PRIMARY_CONNECTION,
- deviceContext, new FunctionImpl());
+ return this.<UpdateTableOutput, UpdateTableOutput>handleServiceCall( PRIMARY_CONNECTION,
+ new FunctionImpl());
}
private MultipartRequestInputBuilder createMultipartHeader(final MultipartType multipart, final Long xid) {
+++ /dev/null
-/**
- * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.openflowplugin.impl.services;
-
-import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
-
-import com.google.common.base.Function;
-import com.google.common.util.concurrent.SettableFuture;
-import org.opendaylight.openflowplugin.api.openflow.device.RequestContext;
-import org.opendaylight.openflowplugin.api.openflow.rpc.RpcContext;
-import org.opendaylight.yangtools.yang.binding.DataObject;
-import org.opendaylight.yangtools.yang.common.RpcResult;
-import org.slf4j.Logger;
-import java.math.BigInteger;
-import java.util.concurrent.Future;
-
-/**
- * @author joe
- *
- */
-public class ServiceCallProcessingUtil {
-
- private static final Logger LOG = org.slf4j.LoggerFactory.getLogger(ServiceCallProcessingUtil.class);
-
- static <T extends DataObject, F> Future<RpcResult<T>> handleServiceCall(final RpcContext rpcContext,
-final BigInteger connectionID, final DeviceContext deviceContext, final Function<BigInteger,Future<RpcResult<F>>> function) {
- LOG.debug("Calling the FlowMod RPC method on MessageDispatchService");
- // use primary connection
-
- final RequestContext<T> requestContext = rpcContext.createRequestContext();
- final SettableFuture<RpcResult<T>> result = rpcContext.storeOrFail(requestContext);
-
- if (!result.isDone()) {
- final Future<RpcResult<F>> resultFromOFLib = function.apply(connectionID);
-
- final RpcResultConvertor<T> rpcResultConvertor = new RpcResultConvertor<>(requestContext, deviceContext);
- rpcResultConvertor.processResultFromOfJava(resultFromOFLib);
-
- } else {
- RequestContextUtil.closeRequstContext(requestContext);
- }
- return result;
- }
-}