21
21
import org .jspecify .annotations .NonNull ;
22
22
23
23
import java .io .IOException ;
24
+ import java .util .concurrent .TimeUnit ;
24
25
import java .util .concurrent .atomic .AtomicLong ;
25
26
26
27
/**
30
31
public class SocketDataPortWithWriteTimeout extends SocketDataPort {
31
32
32
33
private long writeTimeoutNanos ;
33
- private long delayPeriodMillis ;
34
+ private long delayPeriodNanos ;
34
35
private ScheduledTask writeWatchTask ;
35
36
private final AtomicLong writeMustBeDoneBy ;
36
37
@@ -41,21 +42,16 @@ public SocketDataPortWithWriteTimeout() {
41
42
@ Override
42
43
public void afterConstruct (Options options ) {
43
44
super .afterConstruct (options );
44
- long writeTimeoutMillis ;
45
- if (options .getSocketWriteTimeout () == null ) {
46
- writeTimeoutMillis = Options .DEFAULT_SOCKET_WRITE_TIMEOUT .toMillis ();
47
- }
48
- else {
49
- writeTimeoutMillis = options .getSocketWriteTimeout ().toMillis ();
50
- }
51
- delayPeriodMillis = writeTimeoutMillis * 51 / 100 ;
52
- writeTimeoutNanos = writeTimeoutMillis * 1_000_000 ;
45
+ writeTimeoutNanos = options .getSocketWriteTimeout () == null
46
+ ? Options .DEFAULT_SOCKET_WRITE_TIMEOUT .toNanos ()
47
+ : options .getSocketWriteTimeout ().toNanos ();
48
+ delayPeriodNanos = writeTimeoutNanos * 51 / 100 ;
53
49
}
54
50
55
51
@ Override
56
52
public void connect (@ NonNull NatsConnection conn , @ NonNull NatsUri nuri , long timeoutNanos ) throws IOException {
57
53
super .connect (conn , nuri , timeoutNanos );
58
- writeWatchTask = new ScheduledTask (conn .getScheduledExecutor (), delayPeriodMillis ,
54
+ writeWatchTask = new ScheduledTask (conn .getScheduledExecutor (), delayPeriodNanos , TimeUnit . NANOSECONDS ,
59
55
() -> {
60
56
// if now is after when it was supposed to be done by
61
57
if (NatsSystemClock .nanoTime () > writeMustBeDoneBy .get ()) {
0 commit comments