X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=openflowplugin-api%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fopenflowplugin%2Fapi%2Fopenflow%2Fdevice%2FDeviceContext.java;h=d0c282d0ab42896d54dfeec212584903234fd00a;hb=142618ab1edad1f7afe6f705a318506b46c4979a;hp=2eaa2f54da6938d5dc3baee513453d562f1f398c;hpb=cd93e3a04858cd9d62b8b41e31dc7b3635bea246;p=openflowplugin.git diff --git a/openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/device/DeviceContext.java b/openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/device/DeviceContext.java index 2eaa2f54da..d0c282d0ab 100644 --- a/openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/device/DeviceContext.java +++ b/openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/device/DeviceContext.java @@ -8,24 +8,31 @@ package org.opendaylight.openflowplugin.api.openflow.device; +import javax.annotation.CheckForNull; +import com.google.common.util.concurrent.ListenableFuture; import io.netty.util.Timeout; import java.math.BigInteger; +import java.util.List; + +import io.netty.util.Timeout; import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService; import org.opendaylight.controller.md.sal.binding.api.NotificationService; -import org.opendaylight.controller.md.sal.binding.api.ReadTransaction; +import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.openflowplugin.api.openflow.OpenFlowPluginTimer; import org.opendaylight.openflowplugin.api.openflow.connection.ConnectionContext; import org.opendaylight.openflowplugin.api.openflow.device.handlers.DeviceContextClosedHandler; import org.opendaylight.openflowplugin.api.openflow.device.handlers.DeviceDisconnectedHandler; import org.opendaylight.openflowplugin.api.openflow.device.handlers.DeviceReplyProcessor; -import org.opendaylight.openflowplugin.api.openflow.device.handlers.MessageHandler; import org.opendaylight.openflowplugin.api.openflow.device.handlers.MultiMsgCollector; +import org.opendaylight.openflowplugin.api.openflow.registry.ItemLifeCycleRegistry; 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.rpc.RpcContext; import org.opendaylight.openflowplugin.api.openflow.statistics.ofpspecific.MessageSpy; -import org.opendaylight.openflowplugin.api.openflow.translator.TranslatorLibrarian; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReply; +import org.opendaylight.yang.gen.v1.urn.opendaylight.role.service.rev150727.OfpRole; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; @@ -48,10 +55,9 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; */ public interface DeviceContext extends AutoCloseable, OpenFlowPluginTimer, - MessageHandler, - TranslatorLibrarian, DeviceReplyProcessor, - DeviceDisconnectedHandler { + DeviceDisconnectedHandler, + PortNumberCache { /** @@ -76,6 +82,17 @@ public interface DeviceContext extends AutoCloseable, */ DeviceState getDeviceState(); + /** + * Method has to activate (MASTER) or deactivate (SLAVE) TransactionChainManager. + * TransactionChainManager represents possibility to write or delete Node subtree data + * for actual Controller Cluster Node. We are able to have an active TxManager only if + * newRole is {@link OfpRole#BECOMESLAVE}. + * Parameters are used as marker to be sure it is change to SLAVE from MASTER or from + * MASTER to SLAVE and the last parameter "cleanDataStore" is used for validation only. + * @param role - NewRole expect to be {@link OfpRole#BECOMESLAVE} or {@link OfpRole#BECOMEMASTER} + */ + ListenableFuture onClusterRoleChange(@CheckForNull OfpRole role); + /** * Method creates put operation using provided data in underlying transaction chain. */ @@ -86,13 +103,20 @@ public interface DeviceContext extends AutoCloseable, */ void addDeleteToTxChain(final LogicalDatastoreType store, final InstanceIdentifier path); + /** + * Method submits Transaction to DataStore. + * @return transaction is submitted successfully + */ + boolean submitTransaction(); + /** * Method exposes transaction created for device * represented by this context. This read only transaction has a fresh dataStore snapshot. * There is a possibility to get different data set from DataStore * as write transaction in this context. + * @return readOnlyTransaction - Don't forget to close it after finish reading */ - ReadTransaction getReadTransaction(); + ReadOnlyTransaction getReadTransaction(); /** @@ -131,6 +155,11 @@ public interface DeviceContext extends AutoCloseable, DeviceMeterRegistry getDeviceMeterRegistry(); + /** + * @return translator library + */ + TranslatorLibrary oook(); + /** * store cancellable timeout handler of currently running barrier task */ @@ -152,20 +181,37 @@ public interface DeviceContext extends AutoCloseable, MessageSpy getMessageSpy(); - void setDeviceDisconnectedHandler(DeviceDisconnectedHandler deviceDisconnectedHandler); - /** * Method sets reference to handler used for cleanup after device context about to be closed. */ void addDeviceContextClosedHandler(DeviceContextClosedHandler deviceContextClosedHandler); - void startGatheringOperationsToOneTransaction(); + MultiMsgCollector getMultiMsgCollector(final RequestContext> requestContext); - void commitOperationsGatheredInOneTransaction(); + Long getReservedXid(); - MultiMsgCollector getMultiMsgCollector(); + /** + * indicates that device context is fully published (e.g.: packetIn messages should be passed) + */ + void onPublished(); - Long getReservedXid(); + /** + * change packetIn rate limiter borders + * + * @param upperBound max amount of outstanding packetIns + */ + void updatePacketInRateLimit(long upperBound); + + /** + * @return registry point for item life cycle sources of device + */ + ItemLifeCycleRegistry getItemLifeCycleSourceRegistry(); + + void setRpcContext(RpcContext rpcContext); + + RpcContext getRpcContext(); + @Override + void close(); }