From f222275505d0f83ed557b9b94fd2d2a5615ca5d8 Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Fri, 12 Aug 2022 16:25:23 +0200 Subject: Add method to use Duration as timeout to make unit explicit, and avoid many magic conversions. --- jrt/src/com/yahoo/jrt/Connection.java | 3 +-- jrt/src/com/yahoo/jrt/Target.java | 17 +++++++++++++++-- jrt/src/com/yahoo/jrt/slobrok/api/Mirror.java | 3 ++- jrt/src/com/yahoo/jrt/slobrok/api/Register.java | 3 ++- jrt/src/com/yahoo/jrt/slobrok/server/Slobrok.java | 3 ++- jrt/src/com/yahoo/jrt/tool/RpcInvoker.java | 3 ++- 6 files changed, 24 insertions(+), 8 deletions(-) (limited to 'jrt/src') diff --git a/jrt/src/com/yahoo/jrt/Connection.java b/jrt/src/com/yahoo/jrt/Connection.java index 1e4092efb75..8a185907aae 100644 --- a/jrt/src/com/yahoo/jrt/Connection.java +++ b/jrt/src/com/yahoo/jrt/Connection.java @@ -464,8 +464,7 @@ class Connection extends Target { waiter.waitDone(); } - public void invokeAsync(Request req, double timeout, - RequestWaiter waiter) { + public void invokeAsync(Request req, double timeout, RequestWaiter waiter) { if (timeout < 0.0) { timeout = 0.0; } diff --git a/jrt/src/com/yahoo/jrt/Target.java b/jrt/src/com/yahoo/jrt/Target.java index 0e8c27deac5..6cb9d432e03 100644 --- a/jrt/src/com/yahoo/jrt/Target.java +++ b/jrt/src/com/yahoo/jrt/Target.java @@ -3,6 +3,8 @@ package com.yahoo.jrt; import com.yahoo.security.tls.ConnectionAuthContext; +import java.time.Duration; + /** * A Target represents a connection endpoint with RPC * capabilities. Each such connection has a client and a server @@ -101,6 +103,10 @@ public abstract class Target { */ public abstract void invokeSync(Request req, double timeout); + public void invokeSync(Request req, Duration timeout) { + invokeSync(req, toSeconds(timeout)); + } + /** * Invoke a request on this target and let the completion be * signalled with a callback. @@ -109,8 +115,15 @@ public abstract class Target { * @param timeout timeout in seconds * @param waiter callback handler */ - public abstract void invokeAsync(Request req, double timeout, - RequestWaiter waiter); + public abstract void invokeAsync(Request req, double timeout, RequestWaiter waiter); + + public void invokeAsync(Request req, Duration timeout, RequestWaiter waiter) { + invokeAsync(req, toSeconds(timeout), waiter); + } + + private static double toSeconds(Duration duration) { + return ((double)duration.toMillis())/1000.0; + } /** * Invoke a request on this target, but ignore the return diff --git a/jrt/src/com/yahoo/jrt/slobrok/api/Mirror.java b/jrt/src/com/yahoo/jrt/slobrok/api/Mirror.java index 7963cd51c75..778cb0455e8 100644 --- a/jrt/src/com/yahoo/jrt/slobrok/api/Mirror.java +++ b/jrt/src/com/yahoo/jrt/slobrok/api/Mirror.java @@ -13,6 +13,7 @@ import com.yahoo.jrt.Task; import com.yahoo.jrt.TransportThread; import com.yahoo.jrt.Values; +import java.time.Duration; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -206,7 +207,7 @@ public class Mirror implements IMirror { req = new Request("slobrok.incremental.fetch"); req.parameters().add(new Int32Value(specsGeneration)); // gencnt req.parameters().add(new Int32Value(5000)); // mstimeout - target.invokeAsync(req, 40.0, reqWait); + target.invokeAsync(req, Duration.ofSeconds(40), reqWait); } private void handleUpdate() { diff --git a/jrt/src/com/yahoo/jrt/slobrok/api/Register.java b/jrt/src/com/yahoo/jrt/slobrok/api/Register.java index 14afea396bf..e529dea2eff 100644 --- a/jrt/src/com/yahoo/jrt/slobrok/api/Register.java +++ b/jrt/src/com/yahoo/jrt/slobrok/api/Register.java @@ -15,6 +15,7 @@ import com.yahoo.jrt.Task; import com.yahoo.jrt.TransportThread; import com.yahoo.jrt.Values; +import java.time.Duration; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -279,7 +280,7 @@ public class Register { req.parameters().add(new StringValue(name)); req.parameters().add(new StringValue(mySpec)); log.log(Level.FINE, logMessagePrefix() + " now"); - target.invokeAsync(req, 35.0, reqWait); + target.invokeAsync(req, Duration.ofSeconds(35), reqWait); } private String logMessagePrefix() { diff --git a/jrt/src/com/yahoo/jrt/slobrok/server/Slobrok.java b/jrt/src/com/yahoo/jrt/slobrok/server/Slobrok.java index 24ab63c1d2f..5fd8beb3cc7 100644 --- a/jrt/src/com/yahoo/jrt/slobrok/server/Slobrok.java +++ b/jrt/src/com/yahoo/jrt/slobrok/server/Slobrok.java @@ -17,6 +17,7 @@ import com.yahoo.jrt.TargetWatcher; import com.yahoo.jrt.Task; import com.yahoo.jrt.Transport; +import java.time.Duration; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -225,7 +226,7 @@ public class Slobrok { this.spec = spec; target = orb.connect(new Spec(spec)); Request cbReq = new Request("slobrok.callback.listNamesServed"); - target.invokeAsync(cbReq, 5.0, this); + target.invokeAsync(cbReq, Duration.ofSeconds(5), this); } @Override diff --git a/jrt/src/com/yahoo/jrt/tool/RpcInvoker.java b/jrt/src/com/yahoo/jrt/tool/RpcInvoker.java index 71049673d90..67933cfafde 100644 --- a/jrt/src/com/yahoo/jrt/tool/RpcInvoker.java +++ b/jrt/src/com/yahoo/jrt/tool/RpcInvoker.java @@ -16,6 +16,7 @@ import com.yahoo.jrt.Transport; import com.yahoo.jrt.Value; import com.yahoo.jrt.Values; +import java.time.Duration; import java.util.Arrays; import java.util.List; import java.util.ArrayList; @@ -80,7 +81,7 @@ public class RpcInvoker { supervisor = new Supervisor(new Transport("invoker")); target = supervisor.connect(new Spec(connectspec)); Request request = createRequest(method,arguments); - target.invokeSync(request,10.0); + target.invokeSync(request, Duration.ofSeconds(10)); if (request.isError()) { System.err.println("error(" + request.errorCode() + "): " + request.errorMessage()); return; -- cgit v1.2.3