Merge "Bug 3328: Set icmpv4-match into OF10 match."
[openflowplugin.git] / openflowplugin-impl / src / main / java / org / opendaylight / openflowplugin / impl / rpc / RpcManagerImpl.java
index e0cb08e84cf2d4cbee44292c95e85c643fd915f9..975fcdd5566ae175ce61b2d49ea142a52d2aa448 100644 (file)
@@ -7,31 +7,36 @@
  */
 package org.opendaylight.openflowplugin.impl.rpc;
 
-import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
+import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
 import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
+import org.opendaylight.openflowplugin.api.openflow.device.handlers.DeviceInitializationPhaseHandler;
 import org.opendaylight.openflowplugin.api.openflow.rpc.RpcContext;
 import org.opendaylight.openflowplugin.api.openflow.rpc.RpcManager;
 import org.opendaylight.openflowplugin.impl.util.MdSalRegistratorUtils;
 
 public class RpcManagerImpl implements RpcManager {
 
-    private DeviceContext deviceContext;
+    private final RpcProviderRegistry rpcProviderRegistry;
+    private DeviceInitializationPhaseHandler deviceInitPhaseHandler;
+    private final int maxRequestsQuota;
 
+    public RpcManagerImpl(final RpcProviderRegistry rpcProviderRegistry,
+                          final int quotaValue) {
+        this.rpcProviderRegistry = rpcProviderRegistry;
+        maxRequestsQuota = quotaValue;
+    }
 
-    private final ProviderContext providerContext;
-
-    public RpcManagerImpl(final ProviderContext providerContext) {
-        this.providerContext = providerContext;
+    @Override
+    public void setDeviceInitializationPhaseHandler(final DeviceInitializationPhaseHandler handler) {
+        deviceInitPhaseHandler = handler;
     }
 
-    /**
-     * (non-Javadoc)
-     *
-     * @see org.opendaylight.openflowplugin.api.openflow.device.handlers.DeviceContextReadyHandler#deviceConnected(org.opendaylight.openflowplugin.api.openflow.device.DeviceContext)
-     */
     @Override
-    public void deviceConnected(final DeviceContext deviceContext) {
-        final RpcContext rpcContext = new RpcContextImpl(providerContext, deviceContext);
+    public void onDeviceContextLevelUp(final DeviceContext deviceContext) {
+        final RpcContext rpcContext = new RpcContextImpl(deviceContext.getMessageSpy(), rpcProviderRegistry, deviceContext, maxRequestsQuota);
+        deviceContext.setDeviceDisconnectedHandler(rpcContext);
         MdSalRegistratorUtils.registerServices(rpcContext, deviceContext);
+        // finish device initialization cycle back to DeviceManager
+        deviceInitPhaseHandler.onDeviceContextLevelUp(deviceContext);
     }
 }