javax.realtime
Class HighResolutionTime

java.lang.Object
  extended byjavax.realtime.HighResolutionTime
All Implemented Interfaces:
java.lang.Comparable
Direct Known Subclasses:
AbsoluteTime, RelativeTime

public abstract class HighResolutionTime
extends java.lang.Object
implements java.lang.Comparable

Class HighResolutionTime is the base class for AbsoluteTime and RelativeTime.

Not currently implemented


Field Summary
protected  long millis
          The millis of this HighResolutionTime
protected  Clock myClock
          The Clock associated with this HighResolutionTime
protected  long nanos
          The nanos of this HighResolutionTime
 
Constructor Summary
HighResolutionTime()
           
 
Method Summary
abstract  AbsoluteTime absolute(Clock clock)
          Convert the time of this to an absolute time, using the given instance of Clock to determine the current time when necessary.
abstract  AbsoluteTime absolute(Clock clock, AbsoluteTime dest)
          Convert the time of this to an absolute time, using the given instance of Clock to determine the current time when necessary.
abstract  java.lang.Object clone()
          Return a clone of this.
 int compareTo(HighResolutionTime time)
          Compares this HighResolutionTime with the specified HighResolutionTime time.
 int compareTo(java.lang.Object object)
          For the Comparable interface.
 boolean equals(HighResolutionTime time)
          Returns true if the argument time has the same type and values as this.
 boolean equals(java.lang.Object object)
          Returns true if the argument object has the same type and values as this.
 Clock getClock()
          Returns a reference to the clock associated with this.
 long getMilliseconds()
          Return the milliseconds part of this HighResolutionTime
 long getNanoseconds()
          Return the nanoseconds part of this HighResolutionTime
 int hashCode()
          Returns a hash code for this object in accordance with the general contract of Object.hashCode().
protected  void normalize()
          Normalize this HighResolutionTime, i.e., perform any carry operations necessary to make 0 <= nanos < 1000000.
abstract  RelativeTime relative(Clock clock, RelativeTime dest)
          Convert the time of this to a relative time, using the given instance of Clock to determine the current time when necessary.
 void set(HighResolutionTime time)
          Change the value represented by this to that of the given time.
 void set(long millis)
          Sets the millisecond component of this to the given argument, and the nanosecond component of this to 0.
 void set(long millis, long nanos)
          Sets the millisecond and nanosecond components of this.
static void waitForObject(java.lang.Object target, HighResolutionTime time)
          Behaves exactly like target.wait() but with the enhancement that it waits with a precision of HighResolutionTime.
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

millis

protected long millis
The millis of this HighResolutionTime


nanos

protected long nanos
The nanos of this HighResolutionTime


myClock

protected Clock myClock
The Clock associated with this HighResolutionTime

Constructor Detail

HighResolutionTime

public HighResolutionTime()
Method Detail

absolute

public abstract AbsoluteTime absolute(Clock clock)
Convert the time of this to an absolute time, using the given instance of Clock to determine the current time when necessary. If clock is null the real-time clock is assumed. A destination object is allocated to return the result. The clock association of the result is with the clock passed as a parameter. See the derived class comments for more specific information.

Parameters:
clock - The instance of Clock used to convert the time of this into absolute time, and the new clock association for the result.
Returns:
the constructed AbsoluteTime object

absolute

public abstract AbsoluteTime absolute(Clock clock,
                                      AbsoluteTime dest)
Convert the time of this to an absolute time, using the given instance of Clock to determine the current time when necessary. If clock is null the real-time clock is assumed. If dest is not null, the result is placed there and returned. Otherwise, a new object is allocated for the result. The clock association of the result is with the clock passed as a parameter. See the derived class comments for more specific information.

Parameters:
clock - The instance of Clock used to convert the time of this into absolute time, and the new clock association for the result.
dest - If dest is not null, the result is placed there and returned. Otherwise, a new object is allocated for the result.
Returns:
The AbsoluteTime conversion in dest if dest is not null, otherwise the result is returned in a newly allocated object. It is associated with the clock parameter.

clone

public abstract java.lang.Object clone()
Return a clone of this. This method should behave effectively as if it constructed a new object with the visible values of this. The new object is created in the current allocation context.

Returns:
the cloned object

compareTo

public int compareTo(HighResolutionTime time)
Compares this HighResolutionTime with the specified HighResolutionTime time.

Parameters:
time - Compares with the time of this.
Returns:
the comparison result, which will be -1, 0 or +1
Throws:
java.lang.ClassCastException - - Thrown if the time parameter is not of the same class as this.
java.lang.IllegalArgumentException - - Thrown if the time parameter is not associated with the same clock as this, or when the time parameter is null.

compareTo

public int compareTo(java.lang.Object object)
For the Comparable interface.

Specified by:
compareTo in interface java.lang.Comparable
Parameters:
object - the given time
Returns:
the comparison result, which will be -1, 0 or +1
Throws:
java.lang.IllegalArgumentException - Thrown if the object parameter is not associated with the same clock as this, or when the object parameter is null.
java.lang.ClassCastException - Thrown if the specified object's type prevents it from being compared to this Object.

equals

public boolean equals(HighResolutionTime time)
Returns true if the argument time has the same type and values as this.

Equality includes clock association.

Parameters:
time - the given time
Returns:
true if time equals this

equals

public boolean equals(java.lang.Object object)
Returns true if the argument object has the same type and values as this.

Equality includes clock association.

Parameters:
object - the given time
Returns:
true if the object equals this

getClock

public Clock getClock()
Returns a reference to the clock associated with this.

Returns:
A reference to the clock associated with this.

getMilliseconds

public final long getMilliseconds()
Return the milliseconds part of this HighResolutionTime

Returns:
the milliseconds part of this

getNanoseconds

public final long getNanoseconds()
Return the nanoseconds part of this HighResolutionTime

Returns:
the milliseconds part of this

hashCode

public int hashCode()
Returns a hash code for this object in accordance with the general contract of Object.hashCode(). Time objects that are equal have the same hash code.

Not currently implemented

Returns:
The hashcode value for this instance.

relative

public abstract RelativeTime relative(Clock clock,
                                      RelativeTime dest)
Convert the time of this to a relative time, using the given instance of Clock to determine the current time when necessary. If clock is null the real-time clock is assumed. If dest is not null, the result is placed there and returned. Otherwise, a new object is allocated for the result. The clock association of the result is with the clock passed as a parameter. See the derived class comments for more specific information.

Parameters:
clock - The instance of Clock used to convert the time of this into relative time, and the new clock association for the result.
dest - If dest is not null, the result is placed there and returned. Otherwise, a new object is allocated for the result.
Returns:
The RelativeTime conversion in dest if dest is not null, otherwise the result is returned in a newly allocated object. It is associated with the clock parameter.

set

public void set(HighResolutionTime time)
Change the value represented by this to that of the given time. If the time parameter is null this method will throw an IllegalArgumentException. If the type of this and the type of the given time are not the same this method will throw a ClassCastException. The clock associated with this is set to be the clock associated with the time parameter.

Parameters:
time - The new value for this.

set

public void set(long millis)
Sets the millisecond component of this to the given argument, and the nanosecond component of this to 0. This method is equivalent to set(millis, 0).

Parameters:
millis - the new millisecond value

set

public void set(long millis,
                long nanos)
Sets the millisecond and nanosecond components of this. The setting is subject to parameter normalization. If there is an overflow in the millisecond component while normalizing then an IllegalArgumentException will be thrown. If after normalization the time is negative then the time represented by this is set to a negative value, but note that negative times are not supported everywhere. For instance, a negative relative time is an invalid value for a periodic thread's period.

Parameters:
millis - The desired value for the millisecond component of this at the completion of the call. The actual value is the result of parameter normalization.
nanos - The desired value for the nanosecond component of this at the completion of the call. The actual value is the result of parameter normalization.
Throws:
java.lang.IllegalArgumentException - Thrown if there is an overflow in the millisecond component while normalizing.

normalize

protected void normalize()
Normalize this HighResolutionTime, i.e., perform any carry operations necessary to make 0 <= nanos < 1000000.


waitForObject

public static void waitForObject(java.lang.Object target,
                                 HighResolutionTime time)
                          throws java.lang.InterruptedException
Behaves exactly like target.wait() but with the enhancement that it waits with a precision of HighResolutionTime. As for target.wait(), there is the possibility of spurious wakeup behavior.

The wait time may be relative or absolute, and it is controlled by the clock associated with it. If the wait time is relative, then the calling thread is blocked waiting on target for the amount of time given by time, and measured by the associated clock. If the wait time is absolute, then the calling thread is blocked waiting on target until the indicated time value is reached by the associated clock.

Parameters:
target - The object on which to wait. The current thread must have a lock on the object.
time - The time for which to wait. If it is RelativeTime(0,0) then wait indefinitely. If it is null then wait indefinitely.
Throws:
java.lang.InterruptedException - - Thrown if this schedulable object is interrupted by RealtimeThread.interrupt() or AsynchronouslyInterruptedException.fire() while it is waiting.
java.lang.IllegalArgumentException - Thrown if time represents a relative time less than zero.
java.lang.IllegalMonitorStateException - Thrown if target is not locked by the caller.
java.lang.UnsupportedOperationException - Thrown if the wait operation is not supported using the clock associated with time.