X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=openflowplugin-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fopenflowplugin%2Fimpl%2Fstatistics%2Fservices%2FOpendaylightMeterStatisticsServiceImpl.java;h=981b50d5a0ed9054f2780f32a54087a6c360ba41;hb=73776c548ab153dee35ca4165ca0ef2413969704;hp=8b6cbba779b97d926f29991434d9626b7b067a5b;hpb=4c820b1dbbaf61ee1c2fad154b9d87fece481c74;p=openflowplugin.git diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightMeterStatisticsServiceImpl.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightMeterStatisticsServiceImpl.java index 8b6cbba779..981b50d5a0 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightMeterStatisticsServiceImpl.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/OpendaylightMeterStatisticsServiceImpl.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the @@ -7,17 +7,12 @@ */ package org.opendaylight.openflowplugin.impl.statistics.services; -import com.google.common.base.Function; -import com.google.common.util.concurrent.JdkFutureAdapters; import com.google.common.util.concurrent.ListenableFuture; -import java.util.concurrent.Future; -import org.opendaylight.openflowjava.protocol.api.util.BinContent; +import java.util.concurrent.atomic.AtomicLong; +import org.opendaylight.mdsal.binding.api.NotificationPublishService; import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext; import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack; -import org.opendaylight.openflowplugin.api.openflow.device.Xid; -import org.opendaylight.openflowplugin.impl.services.CommonService; -import org.opendaylight.openflowplugin.impl.services.DataCrate; -import org.opendaylight.openflowplugin.impl.services.RequestInputUtils; +import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetAllMeterConfigStatisticsInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetAllMeterConfigStatisticsOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetAllMeterStatisticsInput; @@ -27,134 +22,54 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111. import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetMeterStatisticsInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetMeterStatisticsOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.OpendaylightMeterStatisticsService; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterId; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartType; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartRequestInputBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeterCaseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeterConfigCaseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeterFeaturesCaseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.meter._case.MultipartRequestMeterBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.meter.config._case.MultipartRequestMeterConfigBuilder; import org.opendaylight.yangtools.yang.common.RpcResult; -/** - * @author joe - */ -public class OpendaylightMeterStatisticsServiceImpl extends CommonService implements OpendaylightMeterStatisticsService { - - - public OpendaylightMeterStatisticsServiceImpl(final RequestContextStack requestContextStack, DeviceContext deviceContext) { - super(requestContextStack, deviceContext); +public class OpendaylightMeterStatisticsServiceImpl implements OpendaylightMeterStatisticsService { + private final AllMeterConfigStatsService allMeterConfig; + private final AllMeterStatsService allMeterStats; + private final MeterFeaturesService meterFeatures; + private final MeterStatsService meterStats; + private final NotificationPublishService notificationPublishService; + + public OpendaylightMeterStatisticsServiceImpl(final RequestContextStack requestContextStack, + final DeviceContext deviceContext, + final AtomicLong compatibilityXidSeed, + final NotificationPublishService notificationPublishService, + final ConvertorExecutor convertorExecutor) { + this.notificationPublishService = notificationPublishService; + + allMeterConfig = new AllMeterConfigStatsService(requestContextStack, + deviceContext, + compatibilityXidSeed, + convertorExecutor); + allMeterStats = new AllMeterStatsService(requestContextStack, + deviceContext, + compatibilityXidSeed, + convertorExecutor); + meterFeatures = new MeterFeaturesService(requestContextStack, deviceContext, compatibilityXidSeed); + meterStats = new MeterStatsService(requestContextStack, deviceContext, compatibilityXidSeed, convertorExecutor); } @Override - public Future> getAllMeterConfigStatistics( + public ListenableFuture> getAllMeterConfigStatistics( final GetAllMeterConfigStatisticsInput input) { - return this - .handleServiceCall( - PRIMARY_CONNECTION, new Function, ListenableFuture>>() { - - @Override - public ListenableFuture> apply(final DataCrate data) { - - 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()); - - final Xid xid = data.getRequestContext().getXid(); - MultipartRequestInputBuilder mprInput = RequestInputUtils - .createMultipartHeader(MultipartType.OFPMPMETERCONFIG, xid.getValue(), version); - mprInput.setMultipartRequestBody(caseBuilder.build()); - Future> resultFromOFLib = deviceContext - .getPrimaryConnectionContext().getConnectionAdapter().multipartRequest(mprInput.build()); - return JdkFutureAdapters - .listenInPoolThread(resultFromOFLib); - } - }); - + return allMeterConfig.handleAndNotify(input, notificationPublishService); } @Override - public Future> getAllMeterStatistics(final GetAllMeterStatisticsInput input) { - - return this.handleServiceCall( - PRIMARY_CONNECTION, - new Function, ListenableFuture>>() { - @Override - public ListenableFuture> apply(final DataCrate data) { - - MultipartRequestMeterCaseBuilder caseBuilder = - new MultipartRequestMeterCaseBuilder(); - MultipartRequestMeterBuilder mprMeterBuild = - new MultipartRequestMeterBuilder(); - mprMeterBuild.setMeterId(new MeterId(BinContent.intToUnsignedLong( - org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common - .types.rev130731.Meter.OFPMALL.getIntValue()))); - caseBuilder.setMultipartRequestMeter(mprMeterBuild.build()); - - final Xid xid = data.getRequestContext().getXid(); - MultipartRequestInputBuilder mprInput = RequestInputUtils - .createMultipartHeader(MultipartType.OFPMPMETER, xid.getValue(), version); - mprInput.setMultipartRequestBody(caseBuilder.build()); - Future> resultFromOFLib = deviceContext.getPrimaryConnectionContext() - .getConnectionAdapter().multipartRequest(mprInput.build()); - - return JdkFutureAdapters.listenInPoolThread(resultFromOFLib); - } - } - ); - + public ListenableFuture> getAllMeterStatistics( + final GetAllMeterStatisticsInput input) { + return allMeterStats.handleAndNotify(input, notificationPublishService); } @Override - public Future> getMeterFeatures(final GetMeterFeaturesInput input) { - return this.handleServiceCall( - PRIMARY_CONNECTION, - new Function, ListenableFuture>>() { - @Override - public ListenableFuture> apply(final DataCrate data) { - - MultipartRequestMeterFeaturesCaseBuilder mprMeterFeaturesBuild = - new MultipartRequestMeterFeaturesCaseBuilder(); - - final Xid xid = data.getRequestContext().getXid(); - MultipartRequestInputBuilder mprInput = - RequestInputUtils.createMultipartHeader(MultipartType.OFPMPMETERFEATURES, xid.getValue(), version); - mprInput.setMultipartRequestBody(mprMeterFeaturesBuild.build()); - Future> resultFromOFLib = deviceContext.getPrimaryConnectionContext().getConnectionAdapter().multipartRequest(mprInput.build()); - return JdkFutureAdapters.listenInPoolThread(resultFromOFLib); - } - }); + public ListenableFuture> getMeterFeatures(final GetMeterFeaturesInput input) { + return meterFeatures.handleAndNotify(input, notificationPublishService); } @Override - public Future> getMeterStatistics(final GetMeterStatisticsInput input) { - return this.handleServiceCall( - PRIMARY_CONNECTION, - new Function, ListenableFuture>>() { - @Override - public ListenableFuture> apply(final DataCrate data) { - MultipartRequestMeterCaseBuilder caseBuilder = - new MultipartRequestMeterCaseBuilder(); - MultipartRequestMeterBuilder mprMeterBuild = - new MultipartRequestMeterBuilder(); - mprMeterBuild.setMeterId(new MeterId(input.getMeterId().getValue())); - caseBuilder.setMultipartRequestMeter(mprMeterBuild.build()); - - final Xid xid = data.getRequestContext().getXid(); - MultipartRequestInputBuilder mprInput = - RequestInputUtils.createMultipartHeader(MultipartType.OFPMPMETER, xid.getValue(), version); - mprInput.setMultipartRequestBody(caseBuilder.build()); - Future> resultFromOFLib = deviceContext.getPrimaryConnectionContext().getConnectionAdapter().multipartRequest(mprInput.build()); - return JdkFutureAdapters.listenInPoolThread(resultFromOFLib); - } - }); - + public ListenableFuture> getMeterStatistics( + final GetMeterStatisticsInput input) { + return meterStats.handleAndNotify(input, notificationPublishService); } - }