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=5e00bce0b2c93449b411acf68cd3945705c42d11;hb=refs%2Fchanges%2F72%2F73472%2F2;hp=38b983f13ff05764e13c22ff3b322a415f4dc164;hpb=4364a002384b6767321799e38a091b109b4161da;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 38b983f13f..5e00bce0b2 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 @@ -7,17 +7,12 @@ */ package org.opendaylight.openflowplugin.impl.statistics.services; -import com.google.common.base.Function; 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.controller.md.sal.binding.api.NotificationPublishService; import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext; -import org.opendaylight.openflowplugin.api.openflow.device.RequestContext; 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.RequestInputUtils; -import org.opendaylight.openflowplugin.impl.util.StatisticsServiceUtil; +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,127 +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.MultipartRequestInput; -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(new Function, ListenableFuture>>() { - - @Override - public ListenableFuture> apply(final RequestContext requestContext) { - - 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 = requestContext.getXid(); - MultipartRequestInputBuilder mprInput = RequestInputUtils - .createMultipartHeader(MultipartType.OFPMPMETERCONFIG, xid.getValue(), getVersion()); - mprInput.setMultipartRequestBody(caseBuilder.build()); - MultipartRequestInput multipartRequestInput = mprInput.build(); - return StatisticsServiceUtil.getRpcResultListenableFuture(xid, multipartRequestInput, getDeviceContext()); - } - }); - + return allMeterConfig.handleAndNotify(input, notificationPublishService); } @Override - public Future> getAllMeterStatistics(final GetAllMeterStatisticsInput input) { - - return this.handleServiceCall( - new Function, ListenableFuture>>() { - @Override - public ListenableFuture> apply(final RequestContext requestContext) { - - 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 = requestContext.getXid(); - MultipartRequestInputBuilder mprInput = RequestInputUtils - .createMultipartHeader(MultipartType.OFPMPMETER, xid.getValue(), getVersion()); - mprInput.setMultipartRequestBody(caseBuilder.build()); - MultipartRequestInput multipartRequestInput = mprInput.build(); - return StatisticsServiceUtil.getRpcResultListenableFuture(xid, multipartRequestInput, getDeviceContext()); - } - } - ); - + public ListenableFuture> getAllMeterStatistics( + final GetAllMeterStatisticsInput input) { + return allMeterStats.handleAndNotify(input, notificationPublishService); } @Override - public Future> getMeterFeatures(final GetMeterFeaturesInput input) { - return this.handleServiceCall( - new Function, ListenableFuture>>() { - @Override - public ListenableFuture> apply(final RequestContext requestContext) { - - MultipartRequestMeterFeaturesCaseBuilder mprMeterFeaturesBuild = - new MultipartRequestMeterFeaturesCaseBuilder(); - - final Xid xid = requestContext.getXid(); - MultipartRequestInputBuilder mprInput = - RequestInputUtils.createMultipartHeader(MultipartType.OFPMPMETERFEATURES, xid.getValue(), getVersion()); - mprInput.setMultipartRequestBody(mprMeterFeaturesBuild.build()); - MultipartRequestInput multipartRequestInput = mprInput.build(); - return StatisticsServiceUtil.getRpcResultListenableFuture(xid, multipartRequestInput, getDeviceContext()); - } - }); + public ListenableFuture> getMeterFeatures(final GetMeterFeaturesInput input) { + return meterFeatures.handleAndNotify(input, notificationPublishService); } @Override - public Future> getMeterStatistics(final GetMeterStatisticsInput input) { - return this.handleServiceCall( - new Function, ListenableFuture>>() { - @Override - public ListenableFuture> apply(final RequestContext requestContext) { - MultipartRequestMeterCaseBuilder caseBuilder = - new MultipartRequestMeterCaseBuilder(); - MultipartRequestMeterBuilder mprMeterBuild = - new MultipartRequestMeterBuilder(); - mprMeterBuild.setMeterId(new MeterId(input.getMeterId().getValue())); - caseBuilder.setMultipartRequestMeter(mprMeterBuild.build()); - - final Xid xid = requestContext.getXid(); - MultipartRequestInputBuilder mprInput = - RequestInputUtils.createMultipartHeader(MultipartType.OFPMPMETER, xid.getValue(), getVersion()); - mprInput.setMultipartRequestBody(caseBuilder.build()); - MultipartRequestInput multipartRequestInput = mprInput.build(); - return StatisticsServiceUtil.getRpcResultListenableFuture(xid, multipartRequestInput, getDeviceContext()); - } - }); - + public ListenableFuture> getMeterStatistics( + final GetMeterStatisticsInput input) { + return meterStats.handleAndNotify(input, notificationPublishService); } - }