*/
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.RequestContext;
+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 Long maxRequestsQuota;
+ public RpcManagerImpl(final RpcProviderRegistry rpcProviderRegistry,
+ final Long 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, org.opendaylight.openflowplugin.api.openflow.device.RequestContext)
- */
@Override
- public void deviceConnected(final DeviceContext deviceContext, final RequestContext requestContext) {
- final RpcContext rpcContext = new RpcContextImpl(providerContext, deviceContext);
+ public void onDeviceContextLevelUp(final DeviceContext deviceContext) {
+ final RpcContext rpcContext = new RpcContextImpl(deviceContext.getMessageSpy(), rpcProviderRegistry, deviceContext.getDeviceState().getNodeInstanceIdentifier(), maxRequestsQuota.intValue());
+ deviceContext.setDeviceDisconnectedHandler(rpcContext);
MdSalRegistratorUtils.registerServices(rpcContext, deviceContext);
+ // finish device initialization cycle back to DeviceManager
+ deviceInitPhaseHandler.onDeviceContextLevelUp(deviceContext);
}
}