Skip to content

Commit 39b2657

Browse files
David LeggMythicaeda
authored andcommitted
Move durationBetween into Duration
1 parent 2f4f273 commit 39b2657

File tree

4 files changed

+9
-11
lines changed

4 files changed

+9
-11
lines changed

contrib/src/main/java/gov/nasa/jpl/aerie/contrib/streamline/modeling/clocks/InstantClock.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import gov.nasa.jpl.aerie.merlin.protocol.types.Duration;
55

66
import java.time.Instant;
7-
import java.time.temporal.ChronoUnit;
87

98
import static gov.nasa.jpl.aerie.merlin.protocol.types.Duration.addToInstant;
109

@@ -17,10 +16,4 @@ public record InstantClock(Instant extract) implements Dynamics<Instant, Instant
1716
public InstantClock step(Duration t) {
1817
return new InstantClock(addToInstant(extract, t));
1918
}
20-
21-
// TODO - this method belongs somewhere else...
22-
// Making it package-private at least lets us move it later without dependency issues outside the library.
23-
static Duration durationBetween(Instant start, Instant end) {
24-
return Duration.of(ChronoUnit.MICROS.between(start, end), Duration.MICROSECONDS);
25-
}
2619
}

contrib/src/main/java/gov/nasa/jpl/aerie/contrib/streamline/modeling/clocks/InstantClockResources.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public static Resource<InstantClock> addToInstant(Resource<Discrete<Instant>> ze
3434
}
3535

3636
public static Resource<Clock> relativeTo(Resource<InstantClock> clock, Resource<Discrete<Instant>> zeroTime) {
37-
return name(ResourceMonad.map(clock, zeroTime, (c, t) -> new Clock(InstantClock.durationBetween(t.extract(), c.extract()))),
37+
return name(ResourceMonad.map(clock, zeroTime, (c, t) -> new Clock(Duration.between(t.extract(), c.extract()))),
3838
"%s relative to %s", clock, zeroTime);
3939
}
4040

contrib/src/main/java/gov/nasa/jpl/aerie/contrib/streamline/modeling/clocks/VariableInstantClockResources.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,14 @@
88

99
import static gov.nasa.jpl.aerie.contrib.streamline.core.monads.ResourceMonad.map;
1010
import static gov.nasa.jpl.aerie.contrib.streamline.debugging.Naming.name;
11-
import static gov.nasa.jpl.aerie.contrib.streamline.modeling.clocks.InstantClock.durationBetween;
1211
import static gov.nasa.jpl.aerie.contrib.streamline.modeling.discrete.DiscreteResources.constant;
1312

1413
public final class VariableInstantClockResources {
1514
private VariableInstantClockResources() {}
1615

1716
public static Resource<VariableClock> relativeTo(Resource<VariableInstantClock> clock, Resource<Discrete<Instant>> zeroTime) {
1817
return name(map(clock, zeroTime, (c, t) ->
19-
new VariableClock(durationBetween(c.extract(), t.extract()), c.multiplier())),
18+
new VariableClock(Duration.between(c.extract(), t.extract()), c.multiplier())),
2019
"%s relative to %s", clock, zeroTime);
2120
}
2221

@@ -37,6 +36,6 @@ public static Resource<Discrete<Boolean>> greaterThanOrEquals(Resource<VariableI
3736
}
3837

3938
public static Resource<VariableClock> between(Resource<VariableInstantClock> start, Resource<VariableInstantClock> end) {
40-
return map(start, end, (s, e) -> new VariableClock(durationBetween(s.extract(), e.extract()), e.multiplier() - s.multiplier()));
39+
return map(start, end, (s, e) -> new VariableClock(Duration.between(s.extract(), e.extract()), e.multiplier() - s.multiplier()));
4140
}
4241
}

merlin-sdk/src/main/java/gov/nasa/jpl/aerie/merlin/protocol/types/Duration.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package gov.nasa.jpl.aerie.merlin.protocol.types;
22

3+
import java.time.Instant;
34
import java.time.temporal.ChronoUnit;
45
import java.util.Collections;
56
import java.util.List;
@@ -455,6 +456,11 @@ public static java.time.Instant addToInstant(final java.time.Instant instant, fi
455456
.plusNanos(1000 * duration.remainderOf(Duration.MILLISECONDS).dividedBy(Duration.MICROSECONDS));
456457
}
457458

459+
/** Compute the duration between two {@link Instant}s. */
460+
public static Duration between(Instant start, Instant end) {
461+
return Duration.of(ChronoUnit.MICROS.between(start, end), Duration.MICROSECONDS);
462+
}
463+
458464
/** @see Duration#add(Duration, Duration) */
459465
public Duration plus(final Duration other) throws ArithmeticException {
460466
return Duration.add(this, other);

0 commit comments

Comments
 (0)