X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-dom-api%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fcore%2Fapi%2FRpcImplementation.java;h=d14910055b6a8ff2f72805599588060dc7f663c6;hp=0299505cdeee6bcef00315507012cbd030f384c1;hb=9bc55ab15fcfbdd395c059dbc5ea7e65200d52b3;hpb=fe024ad74b8656c3ee61b9ddff6009a779aa2189 diff --git a/opendaylight/md-sal/sal-dom-api/src/main/java/org/opendaylight/controller/sal/core/api/RpcImplementation.java b/opendaylight/md-sal/sal-dom-api/src/main/java/org/opendaylight/controller/sal/core/api/RpcImplementation.java index 0299505cde..d14910055b 100644 --- a/opendaylight/md-sal/sal-dom-api/src/main/java/org/opendaylight/controller/sal/core/api/RpcImplementation.java +++ b/opendaylight/md-sal/sal-dom-api/src/main/java/org/opendaylight/controller/sal/core/api/RpcImplementation.java @@ -9,32 +9,32 @@ package org.opendaylight.controller.sal.core.api; import java.util.Set; -import org.opendaylight.controller.sal.core.api.Broker.ConsumerSession; -import org.opendaylight.controller.sal.core.api.Broker.ProviderSession; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.data.api.CompositeNode; +import com.google.common.util.concurrent.ListenableFuture; + /** - * {@link Provider}'s implementation of rpc. - * - * In order to expose the rpc to other components, the provider MUST register - * concrete implementation of this interface - * + * {@link Provider}'s implementation of an RPC. + * + * In order to expose an RPC to other components, the provider MUST register + * a concrete implementation of this interface. + * * The registration could be done by : * - * + * * The simplified process of the invocation of rpc is following: - * + * *
    *
  1. {@link Consumer} invokes - * {@link ConsumerSession#rpc(QName, CompositeNode)} + * {@link org.opendaylight.controller.sal.core.api.Broker.ConsumerSession#rpc(QName, CompositeNode)} *
  2. {@link Broker} finds registered {@link RpcImplementation}s *
  3. {@link Broker} invokes * {@link RpcImplementation#invokeRpc(QName, CompositeNode)} @@ -42,40 +42,37 @@ import org.opendaylight.yangtools.yang.data.api.CompositeNode; * {@link RpcResult} *
  4. {@link Broker} returns the {@link RpcResult} to {@link Consumer} *
- * - * */ public interface RpcImplementation extends Provider.ProviderFunctionality { /** * A set of rpc types supported by implementation. - * + * * The set of rpc {@link QName}s which are supported by this implementation. * This set is used, when {@link Provider} is registered to the SAL, to * register and expose the implementation of the returned rpcs. - * + * * @return Set of QNames identifying supported RPCs */ Set getSupportedRpcs(); /** - * Invokes a implementation of specified rpc. - * - * + * Invokes a implementation of specified RPC asynchronously. + * * @param rpc - * Rpc to be invoked + * RPC to be invoked * @param input - * Input data for rpc. - * + * Input data for the RPC. + * * @throws IllegalArgumentException * - * @return RpcResult containing the output of rpc if was executed - * successfully, the list of errors otherwise. + * @return Future promising an RpcResult containing the output of + * the RPC if was executed successfully, the list of errors + * otherwise. */ - RpcResult invokeRpc(QName rpc, CompositeNode input); - + ListenableFuture> invokeRpc(QName rpc, CompositeNode input); }