X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-remoterpc-connector%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fremote%2Frpc%2FRemoteRpcImplementation.java;h=3046f7e6dde0284fefa3f6e5bbbc07d3e1a9a374;hb=62468daa9029368b321b6e1e18fa9cfa0ae994b4;hp=067386e2d0788dff60741a1845133b8141f66231;hpb=2418a6052d7eba917d5972f0630cf746d22f690c;p=controller.git diff --git a/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/RemoteRpcImplementation.java b/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/RemoteRpcImplementation.java index 067386e2d0..3046f7e6dd 100644 --- a/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/RemoteRpcImplementation.java +++ b/opendaylight/md-sal/sal-remoterpc-connector/src/main/java/org/opendaylight/controller/remote/rpc/RemoteRpcImplementation.java @@ -5,44 +5,29 @@ * 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.remote.rpc; import akka.actor.ActorRef; -import akka.pattern.Patterns; -import akka.util.Timeout; -import com.google.common.base.Preconditions; -import com.google.common.util.concurrent.CheckedFuture; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcException; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcIdentifier; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcImplementation; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult; +import com.google.common.util.concurrent.ListenableFuture; import org.opendaylight.controller.remote.rpc.messages.ExecuteRpc; -import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; +import org.opendaylight.mdsal.dom.api.DOMRpcIdentifier; +import org.opendaylight.mdsal.dom.api.DOMRpcImplementation; +import org.opendaylight.mdsal.dom.api.DOMRpcResult; +import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; /** * A {@link DOMRpcImplementation} which routes invocation requests to a remote invoker actor. * * @author Robert Varga */ -final class RemoteRpcImplementation implements DOMRpcImplementation { - // 0 for local, 1 for binding, 2 for remote - private static final long COST = 2; - - private final ActorRef remoteInvoker; - private final Timeout askDuration; - - RemoteRpcImplementation(final ActorRef remoteInvoker, final RemoteRpcProviderConfig config) { - this.remoteInvoker = Preconditions.checkNotNull(remoteInvoker); - this.askDuration = config.getAskDuration(); +final class RemoteRpcImplementation extends AbstractRemoteImplementation implements DOMRpcImplementation { + RemoteRpcImplementation(final ActorRef remoteInvoker, final RemoteOpsProviderConfig config) { + super(remoteInvoker, config); } @Override - public CheckedFuture invokeRpc(final DOMRpcIdentifier rpc, - final NormalizedNode input) { - final RemoteDOMRpcFuture ret = RemoteDOMRpcFuture.create(rpc.getType().getLastComponent()); - ret.completeWith(Patterns.ask(remoteInvoker, ExecuteRpc.from(rpc, input), askDuration)); - return ret; + public ListenableFuture invokeRpc(final DOMRpcIdentifier rpc, final ContainerNode input) { + return new RemoteDOMRpcFuture(rpc.getType(), ask(ExecuteRpc.from(rpc, input))); } @Override