/* * 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.binding.api.rpc; import java.util.Set; import org.opendaylight.controller.md.sal.common.api.routing.RouteChangePublisher; import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.RoutedRpcRegistration; import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.RpcRegistration; import org.opendaylight.yangtools.yang.binding.BaseIdentity; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.binding.RpcService; /** * RpcRouter is responsible for selecting RpcService based on provided routing * context identifier {@link RpcRoutingTable#getContextIdentifier()} and path in * overal data tree (@link {@link InstanceIdentifier}. * * * @author Tony Tkacik * * @param * Type of RpcService for which router provides routing information * and route selection. */ public interface RpcRouter extends // RouteChangePublisher, InstanceIdentifier> { /** * Returns a type of RpcService which is served by this instance of router. * * @return type of RpcService which is served by this instance of router. */ Class getServiceType(); /** * Returns a instance of T which is associated with this router instance * and routes messages based on routing tables. * * @return type of RpcService which is served by this instance of router. */ T getInvocationProxy(); /** * Returns a routing table for particular route context * * @param routeContext * @return Routing Table for particular route context. */ RpcRoutingTable getRoutingTable(Class routeContext); /** * Returns an instance of RpcService which is responsible for processing * particular path. * * @param context * Rpc Routing Context * @param path * Instance Identifier which is used as a selector of instance. * @return instance of RpcService which is responsible for processing * particular path. */ T getService(Class context, InstanceIdentifier path); /** * Returns a default fallback instance of RpcService which is responsible * for handling all unknown imports. * * @return default instance responsible for processing RPCs. */ T getDefaultService(); Set> getContexts(); RoutedRpcRegistration addRoutedRpcImplementation(T service); RpcRegistration registerDefaultService(T service); }