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=956569b21fb14d77ed83916e1bd88db8a780f3f2;hb=04b94fa38bbf5af49289b75406ffe8ca9241aa2e;hp=bbd535852ec990aaced7d17a6ff187fb2c5fdade;hpb=2de6a76c3dd5dd1bbe3890c496907f2f75b9e160;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 bbd535852e..956569b21f 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,15 +8,15 @@ package org.opendaylight.openflowplugin.api.openflow.device; -import org.opendaylight.controller.sal.binding.api.NotificationProviderService; - import io.netty.util.Timeout; import java.math.BigInteger; -import java.util.Map; import org.opendaylight.controller.md.sal.binding.api.ReadTransaction; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.controller.sal.binding.api.NotificationProviderService; 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.OutstandingMessageExtractor; @@ -24,12 +24,14 @@ import org.opendaylight.openflowplugin.api.openflow.device.listener.OpenflowMess 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.api.openflow.translator.TranslatorLibrarian; import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TableFeatures; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; /** + *

* The central entity of OFP is the Device Context, which encapsulate the logical state of a switch * as seen by the controller. Each OpenFlow session is tracked by a Connection Context. * These attach to a particular Device Context in such a way, that there is at most one primary @@ -42,10 +44,16 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; * which is enforced by keeping a cap on the number of outstanding requests a particular Request * Context can have at any point in time. Should this quota be exceeded, any further attempt to make * a request to the switch will fail immediately, with proper error indication. - *

+ *

* Created by Martin Bobak <mbobak@cisco.com> on 25.2.2015. */ -public interface DeviceContext extends AutoCloseable,OpenflowPluginTimer, MessageHandler, TranslatorLibrarian, OutstandingMessageExtractor, DeviceReplyProcessor { +public interface DeviceContext extends AutoCloseable, + OpenflowPluginTimer, + MessageHandler, + TranslatorLibrarian, + OutstandingMessageExtractor, + DeviceReplyProcessor, + DeviceDisconnectedHandler { /** @@ -89,13 +97,6 @@ public interface DeviceContext extends AutoCloseable,OpenflowPluginTimer, Messag ReadTransaction getReadTransaction(); - /** - * Method provides capabilities of connected device. - * - * @return - */ - TableFeatures getCapabilities(); - /** * Method provides current devices connection context. * @@ -112,14 +113,21 @@ public interface DeviceContext extends AutoCloseable,OpenflowPluginTimer, Messag /** * Method generates unique XID value. + * * @return */ Xid getNextXid(); /** - * @return readonly map of outstanding requests + * @param xid key + * @return request by xid + */ + RequestContext lookupRequest(Xid xid); + + /** + * @return number of outstanding requests in map */ - Map getRequests(); + int getNumberOfOutstandingRequests(); /** * Method writes request context into request context map. This method @@ -130,6 +138,13 @@ public interface DeviceContext extends AutoCloseable,OpenflowPluginTimer, Messag */ void hookRequestCtx(Xid xid, RequestContext requestFutureContext); + /** + * Method removes request context from request context map. + * + * @param xid + */ + RequestContext unhookRequestCtx(Xid xid); + /** * Method that attaches anyMessageTypeListener to connection adapters as message listener. * @@ -139,28 +154,33 @@ public interface DeviceContext extends AutoCloseable,OpenflowPluginTimer, Messag /** * Method returns registered {@link org.opendaylight.openflowplugin.api.openflow.device.listener.OpenflowMessageListenerFacade} + * * @return */ OpenflowMessageListenerFacade getOpenflowMessageListenerFacade(); /** * Method exposes flow registry used for storing flow ids identified by calculated flow hash. + * * @return */ DeviceFlowRegistry getDeviceFlowRegistry(); + /** * Method exposes device group registry used for storing group ids. + * * @return */ DeviceGroupRegistry getDeviceGroupRegistry(); + /** * Method exposes device meter registry used for storing meter ids. + * * @return */ DeviceMeterRegistry getDeviceMeterRegistry(); - /** * store cancellable timeout handler of currently running barrier task */ @@ -173,9 +193,19 @@ public interface DeviceContext extends AutoCloseable,OpenflowPluginTimer, Messag /** * Sets notification service + * * @param notificationService */ void setNotificationService(NotificationProviderService notificationService); + 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); + }