Default DOMRpcImplementation returns cost 0. Since invoking
a binding RPC involves some codec work, we want the binding
implementation to take a back seat of there is a native
RPC implementation (for example implemented in pure DOM terms).
Change-Id: I10e3bc6133980c6fc9750f02e94450655b67020f
Signed-off-by: Robert Varga <rovarga@cisco.com>
private static final Cache<Class<?>, RpcServiceInvoker> SERVICE_INVOKERS
= CacheBuilder.newBuilder().weakKeys().build();
private static final Cache<Class<?>, RpcServiceInvoker> SERVICE_INVOKERS
= CacheBuilder.newBuilder().weakKeys().build();
+ // Default implementations are 0, we need to perform some translation, hence we have a slightly higher cost
+ private static final int COST = 1;
private final BindingNormalizedNodeCodecRegistry codec;
private final RpcServiceInvoker invoker;
private final BindingNormalizedNodeCodecRegistry codec;
private final RpcServiceInvoker invoker;
return transformResult(bindingResult);
}
return transformResult(bindingResult);
}
+ @Override
+ public long invocationCost() {
+ return COST;
+ }
+
private DataObject deserilialize(final SchemaPath rpcPath, final NormalizedNode<?, ?> input) {
if (input instanceof LazySerializedContainerNode) {
return ((LazySerializedContainerNode) input).bindingData();
private DataObject deserilialize(final SchemaPath rpcPath, final NormalizedNode<?, ?> input) {
if (input instanceof LazySerializedContainerNode) {
return ((LazySerializedContainerNode) input).bindingData();
final ListenableFuture<RpcResult<?>> bindingResult) {
return LazyDOMRpcResultFuture.create(codec, bindingResult);
}
final ListenableFuture<RpcResult<?>> bindingResult) {
return LazyDOMRpcResultFuture.create(codec, bindingResult);
}