package org.opendaylight.controller.sal.binding.spi; 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 { /** * 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 getRpcServiceType(); /** * 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(); /** * */ void setDefaultService(); }