BUG-956 deadlock by rpc invocation - phase2
[openflowplugin.git] / openflowplugin / src / main / java / org / opendaylight / openflowplugin / openflow / md / core / session / SessionManager.java
index 19f40ca5bd82f1d17fcd7ef455e1a759ccfce388..6e16b6eb7d10caee2e4953dd0edcc1008096feeb 100644 (file)
@@ -24,24 +24,26 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yangtools.concepts.ListenerRegistration;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 
+import com.google.common.util.concurrent.ListeningExecutorService;
+
 /**
  * @author mirehak
  */
-public interface SessionManager {
+public interface SessionManager extends AutoCloseable {
 
     /**
      * @param sessionKey
      * @return corresponding conductor, holding {@link ConnectionAdapter} to
      *         primary connection
      */
-    public SessionContext getSessionContext(SwitchConnectionDistinguisher sessionKey);
+    public SessionContext getSessionContext(SwitchSessionKeyOF sessionKey);
 
     /**
      * disconnect all underlying {@link ConnectionAdapter}s and notify listeners
      *
      * @param sessionKey
      */
-    public void invalidateSessionContext(SwitchConnectionDistinguisher sessionKey);
+    public void invalidateSessionContext(SwitchSessionKeyOF sessionKey);
 
     /**
      * register session context
@@ -49,7 +51,7 @@ public interface SessionManager {
      * @param sessionKey
      * @param context
      */
-    public void addSessionContext(SwitchConnectionDistinguisher sessionKey, SessionContext context);
+    public void addSessionContext(SwitchSessionKeyOF sessionKey, SessionContext context);
 
     /**
      * disconnect particular auxiliary {@link ConnectionAdapter}, identified by
@@ -58,7 +60,7 @@ public interface SessionManager {
      * @param sessionKey
      * @param connectionCookie
      */
-    public void invalidateAuxiliary(SwitchConnectionDistinguisher sessionKey,
+    public void invalidateAuxiliary(SwitchSessionKeyOF sessionKey,
             SwitchConnectionDistinguisher connectionCookie);
 
     /**
@@ -111,4 +113,14 @@ public interface SessionManager {
      * @param popListenerMapping the popListenerMapping to set
      */
     void setPopListenerMapping(Map<Class<? extends DataObject>, Collection<PopListener<DataObject>>> popListenerMapping);
+
+    /**
+     * @param newFixedThreadPool
+     */
+    void setRpcPool(ListeningExecutorService newFixedThreadPool);
+
+    /**
+     * @return the rpcPool instance
+     */
+    ListeningExecutorService getRpcPool();
 }