Top Description Inners Fields Constructors Methods
io.grpc

public final Class Deadline

extends Object
implements Comparable<Deadline>
Class Inheritance
All Implemented Interfaces
java.lang.Comparable
Imports
java.util.Arrays, .Locale, java.util.concurrent.ScheduledExecutorService, .ScheduledFuture, .TimeUnit

An absolute point in time, generally for tracking when a task should be completed. A deadline is immutable except for the passage of time causing it to expire.

Many systems use timeouts, which are relative to the start of the operation. However, being relative causes them to be poorly suited for managing higher-level tasks where there are many components and sub-operations that may not know the time of the initial "start of the operation." However, a timeout can be converted to a Deadline at the start of the operation and then passed to the various components unambiguously.

Nested and Inner Type Summary

Modifier and TypeClass and Description
private static class
public abstract static class
Deadline.Ticker

Time source representing nanoseconds since fixed but arbitrary point in time.

Field Summary

Modifier and TypeField and Description
private final long
private volatile boolean
private static final long
private static final long
private static final long
private static final Deadline.SystemTicker
private final Deadline.Ticker

Constructor Summary

AccessConstructor and Description
private
Deadline(Deadline.Ticker ticker, long offset, boolean baseInstantAlreadyExpired)

private
Deadline(Deadline.Ticker ticker, long baseInstant, long offset, boolean baseInstantAlreadyExpired)

Method Summary

Modifier and TypeMethod and Description
public static Deadline

Returns:

A new deadline.
after
(long
A non-negative duration.
duration
,
TimeUnit
The time unit for the duration.
units
)

Create a deadline that will expire at the specified offset based on the system ticker.

public static Deadline

Returns:

A new deadline.
after
(long
A non-negative duration.
duration
,
TimeUnit
The time unit for the duration.
units
,
Deadline.Ticker
Where this deadline refer the current time
ticker
)

Create a deadline that will expire at the specified offset based on the given Ticker.

private static <T> T
checkNotNull(T reference, Object errorMessage)

private void
public int
compareTo(Deadline
the object to be compared.
that
)

Implements java.lang.Comparable.compareTo.

Compares this object with the specified object for order.
public boolean
equals(final Object
the reference object with which to compare.
o
)

Overrides java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.
public static Deadline.Ticker
getSystemTicker()

Returns the ticker that's based on system clock.

public int
hashCode()

Overrides java.lang.Object.hashCode.

Returns a hash code value for the object.
public boolean
isBefore(Deadline other)

Is this deadline before another.

public boolean

Returns:

true if it has, otherwise false.
isExpired
()

Returns whether this has deadline expired.

public Deadline
minimum(Deadline
deadline to compare with this.
other
)

Return the minimum deadline of this or an other deadline.

public Deadline
offset(long offset, TimeUnit units)

Create a new deadline that is offset from this.

public ScheduledFuture<?>

Returns:

ScheduledFuture which can be used to cancel execution of the task
runOnExpiration
(Runnable
to run on expiration
task
,
ScheduledExecutorService
used to execute the task
scheduler
)

Schedule a task to be run when the deadline expires.

public long
timeRemaining(TimeUnit unit)

How much time is remaining in the specified time unit.

public String
toString()

Overrides java.lang.Object.toString.

Returns a string representation of the object.
Inherited from java.lang.Object:
clonefinalizegetClassnotifynotifyAllwaitwaitwait

Field Detail

deadlineNanosback to summary
private final long deadlineNanos
expiredback to summary
private volatile boolean expired
MAX_OFFSETback to summary
private static final long MAX_OFFSET
MIN_OFFSETback to summary
private static final long MIN_OFFSET
NANOS_PER_SECONDback to summary
private static final long NANOS_PER_SECOND
SYSTEM_TICKERback to summary
private static final Deadline.SystemTicker SYSTEM_TICKER
tickerback to summary
private final Deadline.Ticker ticker

Constructor Detail

Deadlineback to summary
private Deadline(Deadline.Ticker ticker, long offset, boolean baseInstantAlreadyExpired)
Deadlineback to summary
private Deadline(Deadline.Ticker ticker, long baseInstant, long offset, boolean baseInstantAlreadyExpired)

Method Detail

afterback to summary
public static Deadline after(long duration, TimeUnit units)

Create a deadline that will expire at the specified offset based on the system ticker.

If the given offset is extraordinarily long, say 100 years, the actual deadline created might saturate.

Parameters
duration:long

A non-negative duration.

units:TimeUnit

The time unit for the duration.

Returns:Deadline

A new deadline.

afterback to summary
public static Deadline after(long duration, TimeUnit units, Deadline.Ticker ticker)

Create a deadline that will expire at the specified offset based on the given Ticker.

If the given offset is extraordinarily long, say 100 years, the actual deadline created might saturate.

CAUTION: Only deadlines created with the same Ticker instance can be compared by methods like minimum, isBefore and compareTo. Custom Tickers should only be used in tests where you fake out the clock. Always use the system ticker in production, or serious errors may occur.

This is EXPERIMENTAL API and may subject to change. If you'd like it to be stabilized or have any feedback, please let us know.

Parameters
duration:long

A non-negative duration.

units:TimeUnit

The time unit for the duration.

ticker:Deadline.Ticker

Where this deadline refer the current time

Returns:Deadline

A new deadline.

Since
1.24.0
checkNotNullback to summary
private static <T> T checkNotNull(T reference, Object errorMessage)
checkTickerback to summary
private void checkTicker(Deadline other)
compareToback to summary
public int compareTo(Deadline that)

Implements java.lang.Comparable.compareTo.

Doc from java.lang.Comparable.compareTo.

Compares this object with the specified object for order. Returns a negative integer, zero, or a positive integer as this object is less than, equal to, or greater than the specified object.

The implementor must ensure signum(x.compareTo(y)) == -signum(y.compareTo(x)) for all x and y. (This implies that x.compareTo(y) must throw an exception if and only if y.compareTo(x) throws an exception.)

The implementor must also ensure that the relation is transitive: (x.compareTo(y) > 0 && y.compareTo(z) > 0) implies x.compareTo(z) > 0.

Finally, the implementor must ensure that x.compareTo(y)==0 implies that signum(x.compareTo(z)) == signum(y.compareTo(z)), for all z.

Both deadlines must be created with the same Ticker.

Parameters
that:Deadline

the object to be compared.

Returns:int

a negative integer, zero, or a positive integer as this object is less than, equal to, or greater than the specified object.

Annotations
@Override
equalsback to summary
public boolean equals(final Object o)

Overrides java.lang.Object.equals.

Doc from java.lang.Object.equals.

Indicates whether some other object is "equal to" this one.

The equals method implements an equivalence relation on non-null object references:

  • It is reflexive: for any non-null reference value x, x.equals(x) should return true.
  • It is symmetric: for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
  • It is transitive: for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
  • It is consistent: for any non-null reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the objects is modified.
  • For any non-null reference value x, x.equals(null) should return false.

An equivalence relation partitions the elements it operates on into equivalence classes; all the members of an equivalence class are equal to each other. Members of an equivalence class are substitutable for each other, at least for some purposes.

Parameters
o:Object

the reference object with which to compare.

Returns:boolean

true if this object is the same as the obj argument; false otherwise.

Annotations
@Override
getSystemTickerback to summary
public static Deadline.Ticker getSystemTicker()

Returns the ticker that's based on system clock.

This is EXPERIMENTAL API and may subject to change. If you'd like it to be stabilized or have any feedback, please let us know.

Since
1.24.0
hashCodeback to summary
public int hashCode()

Overrides java.lang.Object.hashCode.

Doc from java.lang.Object.hashCode.

Returns a hash code value for the object. This method is supported for the benefit of hash tables such as those provided by java.util.HashMap.

The general contract of hashCode is:

  • Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer, provided no information used in equals comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application.
  • If two objects are equal according to the equals method, then calling the hashCode method on each of the two objects must produce the same integer result.
  • It is not required that if two objects are unequal according to the equals method, then calling the hashCode method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables.
Returns:int

a hash code value for this object.

Annotations
@Override
isBeforeback to summary
public boolean isBefore(Deadline other)

Is this deadline before another. Two deadlines must be created using the same Ticker.

isExpiredback to summary
public boolean isExpired()

Returns whether this has deadline expired.

Returns:boolean

true if it has, otherwise false.

minimumback to summary
public Deadline minimum(Deadline other)

Return the minimum deadline of this or an other deadline. They must be created using the same Ticker.

Parameters
other:Deadline

deadline to compare with this.

offsetback to summary
public Deadline offset(long offset, TimeUnit units)

Create a new deadline that is offset from this.

If the given offset is extraordinarily long, say 100 years, the actual deadline created might saturate.

runOnExpirationback to summary
public ScheduledFuture<?> runOnExpiration(Runnable task, ScheduledExecutorService scheduler)

Schedule a task to be run when the deadline expires.

Note if this deadline was created with a custom Ticker, the scheduler's underlying clock should be synchronized with that Ticker. Otherwise the task won't be run at the expected point of time.

Parameters
task:Runnable

to run on expiration

scheduler:ScheduledExecutorService

used to execute the task

Returns:ScheduledFuture<?>

ScheduledFuture which can be used to cancel execution of the task

timeRemainingback to summary
public long timeRemaining(TimeUnit unit)

How much time is remaining in the specified time unit. Internal units are maintained as nanoseconds and conversions are subject to the constraints documented for TimeUnit#convert. If there is no time remaining, the returned duration is how long ago the deadline expired.

toStringback to summary
public String toString()

Overrides java.lang.Object.toString.

Doc from java.lang.Object.toString.

Returns a string representation of the object.

Returns:String

a string representation of the object.

Annotations
@Override
io.grpc back to summary

private Class Deadline.SystemTicker

extends Ticker
Class Inheritance

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
public long
nanoTime()

Implements abstract io.grpc.Deadline.Ticker.nanoTime.

Returns the number of nanoseconds since this source's epoch.

Constructor Detail

SystemTickerback to summary
private SystemTicker()

Method Detail

nanoTimeback to summary
public long nanoTime()

Implements abstract io.grpc.Deadline.Ticker.nanoTime.

Doc from io.grpc.Deadline.Ticker.nanoTime.

Returns the number of nanoseconds since this source's epoch.

Annotations
@Override
io.grpc back to summary

public abstract Class Deadline.Ticker

extends Object
Class Inheritance
Known Direct Subclasses
io.grpc.Deadline.SystemTicker

Time source representing nanoseconds since fixed but arbitrary point in time.

DO NOT use custom Ticker implementations in production, because deadlines created with custom tickers are incompatible with those created with the system ticker. Always use the system ticker whenever you need to provide one in production code.

This is EXPERIMENTAL API and may subject to change. If you'd like it to be stabilized or have any feedback, please let us know.

In general implementations should be thread-safe, unless it's implemented and used in a localized environment (like unit tests) where you are sure the usages are synchronized.

Since
1.24.0

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
public abstract long
nanoTime()

Returns the number of nanoseconds since this source's epoch.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Constructor Detail

Tickerback to summary
public Ticker()

Method Detail

nanoTimeback to summary
public abstract long nanoTime()

Returns the number of nanoseconds since this source's epoch.