X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-remoterpc-connector%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fremote%2Frpc%2FRpcListener.java;h=5b1c5547992c9d3849e6310c6404ffaeeec29a20;hp=22879dda2f903f6008c5a7c21a2a6447acca12bf;hb=b78ee4d6b08e2cc0cf5edd01af0e54c3bf619ab5;hpb=592ff3cd9e1b80d4cbd9ca45ed4a2371377a7622 diff --git a/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/RpcListener.java b/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/RpcListener.java index 22879dda2f..5b1c554799 100644 --- a/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/RpcListener.java +++ b/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/RpcListener.java @@ -10,46 +10,57 @@ package org.opendaylight.controller.remote.rpc; import akka.actor.ActorRef; +import com.google.common.base.Preconditions; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import javax.annotation.Nonnull; +import org.opendaylight.controller.md.sal.dom.api.DOMRpcAvailabilityListener; +import org.opendaylight.controller.md.sal.dom.api.DOMRpcIdentifier; import org.opendaylight.controller.remote.rpc.registry.RpcRegistry; import org.opendaylight.controller.sal.connector.api.RpcRouter; -import org.opendaylight.controller.sal.core.api.RpcRegistrationListener; -import org.opendaylight.yangtools.yang.common.QName; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.ArrayList; -import java.util.List; +public class RpcListener implements DOMRpcAvailabilityListener { -public class RpcListener implements RpcRegistrationListener{ + private static final Logger LOG = LoggerFactory.getLogger(RpcListener.class); + private final ActorRef rpcRegistry; - private static final Logger LOG = LoggerFactory.getLogger(RpcListener.class); - private final ActorRef rpcRegistry; + public RpcListener(final ActorRef rpcRegistry) { + this.rpcRegistry = rpcRegistry; + } - public RpcListener(ActorRef rpcRegistry) { - this.rpcRegistry = rpcRegistry; - } + @Override + public void onRpcAvailable(@Nonnull final Collection rpcs) { + Preconditions.checkArgument(rpcs != null, "Input Collection of DOMRpcIdentifier can not be null."); + if (LOG.isDebugEnabled()) { + LOG.debug("Adding registration for [{}]", rpcs); + } + final List> routeIds = new ArrayList<>(); - @Override - public void onRpcImplementationAdded(QName rpc) { - if(LOG.isDebugEnabled()) { - LOG.debug("Adding registration for [{}]", rpc); + for (final DOMRpcIdentifier rpc : rpcs) { + final RpcRouter.RouteIdentifier routeId = + new RouteIdentifierImpl(null, rpc.getType().getLastComponent(), rpc.getContextReference()); + routeIds.add(routeId); + } + final RpcRegistry.Messages.AddOrUpdateRoutes addRpcMsg = new RpcRegistry.Messages.AddOrUpdateRoutes(routeIds); + rpcRegistry.tell(addRpcMsg, ActorRef.noSender()); } - RpcRouter.RouteIdentifier routeId = new RouteIdentifierImpl(null, rpc, null); - List> routeIds = new ArrayList<>(); - routeIds.add(routeId); - RpcRegistry.Messages.AddOrUpdateRoutes addRpcMsg = new RpcRegistry.Messages.AddOrUpdateRoutes(routeIds); - rpcRegistry.tell(addRpcMsg, ActorRef.noSender()); - } - - @Override - public void onRpcImplementationRemoved(QName rpc) { - if(LOG.isDebugEnabled()) { - LOG.debug("Removing registration for [{}]", rpc); + + @Override + public void onRpcUnavailable(@Nonnull final Collection rpcs) { + Preconditions.checkArgument(rpcs != null, "Input Collection of DOMRpcIdentifier can not be null."); + + LOG.debug("Removing registration for [{}]", rpcs); + + final List> routeIds = new ArrayList<>(); + for (final DOMRpcIdentifier rpc : rpcs) { + final RpcRouter.RouteIdentifier routeId = + new RouteIdentifierImpl(null, rpc.getType().getLastComponent(), rpc.getContextReference()); + routeIds.add(routeId); + } + final RpcRegistry.Messages.RemoveRoutes removeRpcMsg = new RpcRegistry.Messages.RemoveRoutes(routeIds); + rpcRegistry.tell(removeRpcMsg, ActorRef.noSender()); } - RpcRouter.RouteIdentifier routeId = new RouteIdentifierImpl(null, rpc, null); - List> routeIds = new ArrayList<>(); - routeIds.add(routeId); - RpcRegistry.Messages.RemoveRoutes removeRpcMsg = new RpcRegistry.Messages.RemoveRoutes(routeIds); - rpcRegistry.tell(removeRpcMsg, ActorRef.noSender()); - } }