X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=openflowplugin-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fopenflowplugin%2Fimpl%2Fservices%2FSalMeterServiceImpl.java;h=bb6aa658b4036d5a15737cc085af21dd2ce1b4d7;hb=b55780a64bdcd852e705d01255d837dab8996325;hp=c302de3a31ca48ed0100c58c04a8ad0042fa184e;hpb=4736bccf800bd2fa2a66cd0c39b063f9bea96350;p=openflowplugin.git diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/SalMeterServiceImpl.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/SalMeterServiceImpl.java index c302de3a31..bb6aa658b4 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/SalMeterServiceImpl.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/SalMeterServiceImpl.java @@ -7,10 +7,9 @@ */ package org.opendaylight.openflowplugin.impl.services; -import org.opendaylight.yangtools.yang.binding.DataObject; -import org.opendaylight.openflowplugin.api.openflow.device.Xid; -import com.google.common.base.Function; -import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.MeterConvertor; +import java.util.concurrent.Future; +import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext; +import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.AddMeterInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.AddMeterOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.RemoveMeterInput; @@ -19,53 +18,34 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.Sal import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.UpdateMeterInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.UpdateMeterOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.Meter; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MeterModInputBuilder; import org.opendaylight.yangtools.yang.common.RpcResult; -import org.slf4j.Logger; -import java.util.concurrent.Future; -public class SalMeterServiceImpl extends CommonService implements SalMeterService { +public class SalMeterServiceImpl implements SalMeterService { + private final MeterService addMeter; + private final MeterService updateMeter; + private final MeterService removeMeter; - private static final Logger LOG = org.slf4j.LoggerFactory.getLogger(SalMeterServiceImpl.class); + public SalMeterServiceImpl(final RequestContextStack requestContextStack, final DeviceContext deviceContext) { + addMeter = new MeterService<>(requestContextStack, deviceContext, AddMeterOutput.class); + updateMeter = new MeterService<>(requestContextStack, deviceContext, UpdateMeterOutput.class); + removeMeter = new MeterService<>(requestContextStack, deviceContext, RemoveMeterOutput.class); + } @Override public Future> addMeter(final AddMeterInput input) { - return this.handleServiceCall( PRIMARY_CONNECTION, - new Function,Future>>() { - @Override - public Future> apply(final DataCrate data) { - return convertAndSend(input, data); - } - }); + addMeter.getDeviceContext().getDeviceMeterRegistry().store(input.getMeterId()); + + return addMeter.handleServiceCall(input); } @Override public Future> updateMeter(final UpdateMeterInput input) { - return this.handleServiceCall( PRIMARY_CONNECTION, - new Function,Future>>() { - @Override - public Future> apply(final DataCrate data) { - return convertAndSend(input.getUpdatedMeter(), data); - } - }); + return updateMeter.handleServiceCall(input.getUpdatedMeter()); } @Override public Future> removeMeter(final RemoveMeterInput input) { - return this.handleServiceCall( PRIMARY_CONNECTION, - new Function,Future>>() { - @Override - public Future> apply(final DataCrate data) { - return convertAndSend(input, data); - } - }); - } - - Future> convertAndSend(final Meter iputMeter, final DataCrate data) { - final MeterModInputBuilder ofMeterModInput = MeterConvertor.toMeterModInput(iputMeter, version); - Xid xid = deviceContext.getNextXid(); - ofMeterModInput.setXid(xid.getValue()); - data.getRequestContext().setXid(xid); - return provideConnectionAdapter(data.getiDConnection()).meterMod(ofMeterModInput.build()); + removeMeter.getDeviceContext().getDeviceMeterRegistry().markToBeremoved(input.getMeterId()); + return removeMeter.handleServiceCall(input); } }