/* * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.controller.sal.connector.remoterpc.api; import java.util.Set; public interface RoutingTable { /** * Adds a network address for the route. If address for route * exists, appends the address to the list * * @param routeId route identifier * @param route network address */ public void addRoute(I routeId, R route) throws SystemException, RoutingTableException; /** * Adds a network address for the route. If the route already exists, * it throws DuplicateRouteException. * This method would be used when registering a global service. * * * @param routeId route identifier * @param route network address * @throws DuplicateRouteException */ public void addGlobalRoute(I routeId, R route) throws RoutingTableException, SystemException; /** * Removes the network address for the route from routing table. If only * one network address existed, remove the route as well. * @param routeId * @param route */ public void removeRoute(I routeId, R route); /** * Remove the route. * This method would be used when registering a global service. * @param routeId */ public void removeGlobalRoute(I routeId); /** * Returns a set of network addresses associated with this route * @param routeId * @return */ public Set getRoutes(I routeId); /** * Returns only one address from the list of network addresses * associated with the route. The algorithm to determine that * one address is upto the implementer * @param routeId * @return */ public R getARoute(I routeId); public void registerRouteChangeListener(RouteChangeListener listener); public class DuplicateRouteException extends RoutingTableException { public DuplicateRouteException(String message) { super(message); } } }