Bug-2827: role switch proposal
[openflowplugin.git] / openflowplugin / src / main / java / org / opendaylight / openflowplugin / openflow / md / core / session / OFSessionUtil.java
index 9465f985a47566a92c76cbe0cabf54da0ea36bf0..d7d0e6761effc9f8d59e0613f634264d24208500 100644 (file)
@@ -14,11 +14,14 @@ import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 
-import org.opendaylight.openflowplugin.openflow.md.core.ConnectionConductor;
-import org.opendaylight.openflowplugin.openflow.md.core.IMDMessageTranslator;
-import org.opendaylight.openflowplugin.openflow.md.core.SwitchConnectionDistinguisher;
-import org.opendaylight.openflowplugin.openflow.md.core.TranslatorKey;
-import org.opendaylight.openflowplugin.openflow.md.queue.PopListener;
+import org.opendaylight.openflowplugin.api.openflow.md.core.session.SessionContext;
+import org.opendaylight.openflowplugin.api.openflow.md.core.session.SwitchSessionKeyOF;
+import org.opendaylight.openflowplugin.openflow.md.core.ConnectionConductorImpl;
+import org.opendaylight.openflowplugin.api.openflow.md.core.IMDMessageTranslator;
+import org.opendaylight.openflowplugin.api.openflow.md.core.SwitchConnectionDistinguisher;
+import org.opendaylight.openflowplugin.api.openflow.md.core.TranslatorKey;
+import org.opendaylight.openflowplugin.extension.api.core.extension.ExtensionConverterProvider;
+import org.opendaylight.openflowplugin.api.openflow.md.queue.PopListener;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetFeaturesOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader;
 import org.opendaylight.yangtools.yang.binding.DataObject;
@@ -38,7 +41,7 @@ public abstract class OFSessionUtil {
      * @param features
      * @param version
      */
-    public static void registerSession(ConnectionConductor connectionConductor,
+    public static void registerSession(ConnectionConductorImpl connectionConductor,
             GetFeaturesOutput features, short version) {
         SwitchSessionKeyOF sessionKey = createSwitchSessionKey(features
                 .getDatapathId());
@@ -57,11 +60,11 @@ public abstract class OFSessionUtil {
             // register new session context (based primary conductor)
             SessionContextOFImpl context = new SessionContextOFImpl();
             context.setPrimaryConductor(connectionConductor);
+            context.setNotificationEnqueuer(connectionConductor);
             context.setFeatures(features);
             context.setSessionKey(sessionKey);
             context.setSeed((int) System.currentTimeMillis());
             connectionConductor.setSessionContext(context);
-            context.setValid(true);
             getSessionManager().addSessionContext(sessionKey, context);
         } else {
             // handle auxiliary
@@ -121,7 +124,7 @@ public abstract class OFSessionUtil {
      * @param features
      * @param seed 
      * @return connection cookie key
-     * @see #createConnectionCookie(BigInteger, short)
+     * @see #createConnectionCookie(BigInteger,short, int)
      */
     public static SwitchConnectionDistinguisher createConnectionCookie(
             GetFeaturesOutput features, int seed) {
@@ -147,7 +150,7 @@ public abstract class OFSessionUtil {
     /**
      * @return session manager singleton instance
      */
-    public static SessionManager getSessionManager() {
+    public static ConjunctSessionManager getSessionManager() {
         return SessionManagerOFImpl.getInstance();
     }
     
@@ -172,4 +175,18 @@ public abstract class OFSessionUtil {
         return getSessionManager().getPopListenerMapping();
     }
 
+    /**
+     * @return extension converters provider
+     */
+    public static ExtensionConverterProvider getExtensionConvertorProvider() {
+        return getSessionManager().getExtensionConverterProvider();
+    }
+
+    /**
+     * @return collection of all sessions
+     */
+    public static Collection<SessionContext> getAllSessions() {
+        return getSessionManager().getAllSessions();
+    }
+
 }