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%2Fregistry%2FRoutingTable.java;h=90b069e58785aa95c50b36734aee9d5eaadffab4;hp=52b1106c873872609e4300abe52d558ee89a6011;hb=00634259fd13ebc57f16ad63340e6472a2b6c6f2;hpb=b0648268f5f85e2533d39e37b01b35487823cac3 diff --git a/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/registry/RoutingTable.java b/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/registry/RoutingTable.java index 52b1106c87..90b069e587 100644 --- a/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/registry/RoutingTable.java +++ b/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/registry/RoutingTable.java @@ -8,52 +8,58 @@ package org.opendaylight.controller.remote.rpc.registry; import akka.actor.ActorRef; -import akka.japi.Option; -import akka.japi.Pair; +import com.google.common.base.Preconditions; import java.io.Serializable; import java.util.HashMap; import java.util.Map; -import org.opendaylight.controller.remote.rpc.registry.gossip.Copier; +import java.util.Optional; +import java.util.Set; +import org.opendaylight.controller.remote.rpc.registry.gossip.BucketData; import org.opendaylight.controller.sal.connector.api.RpcRouter; +import org.opendaylight.controller.sal.connector.api.RpcRouter.RouteIdentifier; -public class RoutingTable implements Copier, Serializable { - private static final long serialVersionUID = 1L; +public class RoutingTable implements BucketData, Serializable { + private static final long serialVersionUID = 5592610415175278760L; - private final Map, Long> table = new HashMap<>(); - private ActorRef router; + private final Map, Long> table; + private final ActorRef router; + + private RoutingTable(final ActorRef router, final Map, Long> table) { + this.router = Preconditions.checkNotNull(router); + this.table = Preconditions.checkNotNull(table); + } + + RoutingTable(final ActorRef router) { + this(router, new HashMap<>()); + } @Override public RoutingTable copy() { - RoutingTable copy = new RoutingTable(); - copy.table.putAll(table); - copy.setRouter(this.getRouter()); - - return copy; + return new RoutingTable(router, new HashMap<>(table)); } - public Option> getRouterFor(RpcRouter.RouteIdentifier routeId){ - Long updatedTime = table.get(routeId); + @Override + public Optional getWatchActor() { + return Optional.of(router); + } - if (updatedTime == null || router == null) { - return Option.none(); - } else { - return Option.option(new Pair<>(router, updatedTime)); - } + public Set> getRoutes() { + return table.keySet(); } - public void addRoute(RpcRouter.RouteIdentifier routeId){ + public void addRoute(final RpcRouter.RouteIdentifier routeId) { table.put(routeId, System.currentTimeMillis()); } - public void removeRoute(RpcRouter.RouteIdentifier routeId){ + public void removeRoute(final RpcRouter.RouteIdentifier routeId) { table.remove(routeId); } - public boolean contains(RpcRouter.RouteIdentifier routeId){ + public boolean contains(final RpcRouter.RouteIdentifier routeId) { return table.containsKey(routeId); } - public boolean isEmpty(){ + public boolean isEmpty() { return table.isEmpty(); } @@ -65,15 +71,8 @@ public class RoutingTable implements Copier, Serializable { return router; } - public void setRouter(ActorRef router) { - this.router = router; - } - @Override public String toString() { - return "RoutingTable{" + - "table=" + table + - ", router=" + router + - '}'; + return "RoutingTable{" + "table=" + table + ", router=" + router + '}'; } }