X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=openflowplugin-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fopenflowplugin%2Fimpl%2Fdevice%2FDeviceContextImpl.java;h=e6389ac342fe923e5494e03e143b5e7bc6367b3b;hb=07d3ee4c62f690ac6394d8db3bad8ea77a896237;hp=de95b489c5e984815ee1f837b3355b5dd9650582;hpb=1d59401855ce860579b62626a2ddbdd8b7f95fe2;p=openflowplugin.git diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/device/DeviceContextImpl.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/device/DeviceContextImpl.java index de95b489c5..e6389ac342 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/device/DeviceContextImpl.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/device/DeviceContextImpl.java @@ -33,11 +33,16 @@ import org.opendaylight.openflowplugin.api.openflow.device.TranslatorLibrary; import org.opendaylight.openflowplugin.api.openflow.device.Xid; import org.opendaylight.openflowplugin.api.openflow.device.exception.DeviceDataException; import org.opendaylight.openflowplugin.api.openflow.device.listener.OpenflowMessageListenerFacade; -import org.opendaylight.openflowplugin.api.openflow.flow.registry.DeviceFlowRegistry; import org.opendaylight.openflowplugin.api.openflow.md.core.SwitchConnectionDistinguisher; import org.opendaylight.openflowplugin.api.openflow.md.core.TranslatorKey; +import org.opendaylight.openflowplugin.api.openflow.registry.flow.DeviceFlowRegistry; +import org.opendaylight.openflowplugin.api.openflow.registry.group.DeviceGroupRegistry; +import org.opendaylight.openflowplugin.api.openflow.registry.meter.DeviceMeterRegistry; +import org.opendaylight.openflowplugin.api.openflow.statistics.ofpspecific.MessageSpy; import org.opendaylight.openflowplugin.impl.common.NodeStaticReplyTranslatorUtil; -import org.opendaylight.openflowplugin.impl.flow.registry.DeviceFlowRegistryImpl; +import org.opendaylight.openflowplugin.impl.registry.flow.DeviceFlowRegistryImpl; +import org.opendaylight.openflowplugin.impl.registry.group.DeviceGroupRegistryImpl; +import org.opendaylight.openflowplugin.impl.registry.meter.DeviceMeterRegistryImpl; import org.opendaylight.openflowplugin.openflow.md.core.session.SwitchConnectionCookieOFImpl; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnector; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId; @@ -87,13 +92,19 @@ public class DeviceContextImpl implements DeviceContext { private TranslatorLibrary translatorLibrary; private OpenflowMessageListenerFacade openflowMessageListenerFacade; private final DeviceFlowRegistry deviceFlowRegistry; + private final DeviceGroupRegistry deviceGroupRegistry; + private final DeviceMeterRegistry deviceMeterRegistry; private Timeout barrierTaskTimeout; private NotificationProviderService notificationService; + private final MessageSpy messageSpy; + @VisibleForTesting DeviceContextImpl(@Nonnull final ConnectionContext primaryConnectionContext, - @Nonnull final DeviceState deviceState, @Nonnull final DataBroker dataBroker, - @Nonnull final HashedWheelTimer hashedWheelTimer) { + @Nonnull final DeviceState deviceState, + @Nonnull final DataBroker dataBroker, + @Nonnull final HashedWheelTimer hashedWheelTimer, + @Nonnull final MessageSpy _messageSpy) { this.primaryConnectionContext = Preconditions.checkNotNull(primaryConnectionContext); this.deviceState = Preconditions.checkNotNull(deviceState); this.dataBroker = Preconditions.checkNotNull(dataBroker); @@ -103,6 +114,9 @@ public class DeviceContextImpl implements DeviceContext { auxiliaryConnectionContexts = new HashMap<>(); requests = new HashMap<>(); deviceFlowRegistry = new DeviceFlowRegistryImpl(); + deviceGroupRegistry = new DeviceGroupRegistryImpl(); + deviceMeterRegistry = new DeviceMeterRegistryImpl(); + messageSpy = _messageSpy; } /** @@ -200,6 +214,16 @@ public class DeviceContextImpl implements DeviceContext { return deviceFlowRegistry; } + @Override + public DeviceGroupRegistry getDeviceGroupRegistry() { + return deviceGroupRegistry; + } + + @Override + public DeviceMeterRegistry getDeviceMeterRegistry() { + return deviceMeterRegistry; + } + @Override public void processReply(final OfHeader ofHeader) { final RequestContext requestContext = getRequests().get(ofHeader.getXid()); @@ -298,7 +322,7 @@ public class DeviceContextImpl implements DeviceContext { nConnectorBuilder.addAugmentation(FlowCapableNodeConnectorStatisticsData.class, new FlowCapableNodeConnectorStatisticsDataBuilder().build()); nConnectorBuilder.addAugmentation(FlowCapableNodeConnector.class, flowCapableNodeConnector); writeToTransaction(LogicalDatastoreType.OPERATIONAL, iiToNodeConnector, nConnectorBuilder.build()); - } else if (portStatus.getReason().equals(PortReason.OFPPRDELETE) ) { + } else if (portStatus.getReason().equals(PortReason.OFPPRDELETE)) { addDeleteToTxChain(LogicalDatastoreType.OPERATIONAL, iiToNodeConnector); } } @@ -333,6 +357,13 @@ public class DeviceContextImpl implements DeviceContext { return hashedWheelTimer; } + @Override + public void close() throws Exception { + for (Map.Entry entry : requests.entrySet()){ + entry.getValue().close(); + } + } + private class XidGenerator {