public class NtpV3Impl extends java.lang.Object implements NtpV3Packet
Modifier and Type | Field and Description |
---|---|
private byte[] |
buf |
private java.net.DatagramPacket |
dp |
private static int |
LI_INDEX |
private static int |
LI_SHIFT |
private static int |
MODE_INDEX |
private static int |
MODE_SHIFT |
private static int |
ORIGINATE_TIMESTAMP_INDEX |
private static int |
POLL_INDEX |
private static int |
PRECISION_INDEX |
private static int |
RECEIVE_TIMESTAMP_INDEX |
private static int |
REFERENCE_ID_INDEX |
private static int |
REFERENCE_TIMESTAMP_INDEX |
private static int |
ROOT_DELAY_INDEX |
private static int |
ROOT_DISPERSION_INDEX |
private static int |
STRATUM_INDEX |
private static int |
TRANSMIT_TIMESTAMP_INDEX |
private static int |
VERSION_INDEX |
private static int |
VERSION_SHIFT |
LI_ALARM_CONDITION, LI_LAST_MINUTE_HAS_59_SECONDS, LI_LAST_MINUTE_HAS_61_SECONDS, LI_NO_WARNING, MODE_BROADCAST, MODE_CLIENT, MODE_CONTROL_MESSAGE, MODE_PRIVATE, MODE_RESERVED, MODE_SERVER, MODE_SYMMETRIC_ACTIVE, MODE_SYMMETRIC_PASSIVE, NTP_MAXCLOCK, NTP_MAXPOLL, NTP_MINCLOCK, NTP_MINPOLL, NTP_PORT, TYPE_DAYTIME, TYPE_ICMP, TYPE_NTP, TYPE_TIME, VERSION_3, VERSION_4
Constructor and Description |
---|
NtpV3Impl()
Creates a new instance of NtpV3Impl
|
Modifier and Type | Method and Description |
---|---|
boolean |
equals(java.lang.Object obj)
Compares this object against the specified object.
|
java.net.DatagramPacket |
getDatagramPacket()
Returns the datagram packet with the NTP details already filled in.
|
private int |
getInt(int index) |
int |
getLeapIndicator()
Returns leap indicator as defined in RFC-1305 which is a two-bit code:
0=no warning
1=last minute has 61 seconds
2=last minute has 59 seconds
3=alarm condition (clock not synchronized)
|
private long |
getLong(int index)
Get Long value represented by bits starting at specified index.
|
int |
getMode()
Returns mode as defined in RFC-1305 which is a 3-bit integer
whose value is indicated by the MODE_xxx parameters.
|
java.lang.String |
getModeName()
Return human-readable name of message mode type as described in
RFC 1305.
|
TimeStamp |
getOriginateTimeStamp()
Returns the originate time as defined in RFC-1305.
|
int |
getPoll()
Returns poll interval as defined in RFC-1305, which is an eight-bit
signed integer indicating the maximum interval between successive
messages, in seconds to the nearest power of two (e.g.
|
int |
getPrecision()
Returns precision as defined in RFC-1305 encoded as an 8-bit signed
integer (seconds to nearest power of two).
|
TimeStamp |
getReceiveTimeStamp()
Returns receive timestamp as defined in RFC-1305.
|
int |
getReferenceId()
Returns the reference id as defined in RFC-1305, which is
a 32-bit integer whose value is dependent on several criteria.
|
java.lang.String |
getReferenceIdString()
Returns the reference id string.
|
TimeStamp |
getReferenceTimeStamp()
Returns the reference time as defined in RFC-1305.
|
int |
getRootDelay()
Return root delay as defined in RFC-1305, which is the total roundtrip delay
to the primary reference source, in seconds.
|
double |
getRootDelayInMillisDouble()
Return root delay as defined in RFC-1305 in milliseconds, which is
the total roundtrip delay to the primary reference source, in
seconds.
|
int |
getRootDispersion()
Returns root dispersion as defined in RFC-1305.
|
long |
getRootDispersionInMillis()
Returns root dispersion (as defined in RFC-1305) in milliseconds.
|
double |
getRootDispersionInMillisDouble()
Returns root dispersion (as defined in RFC-1305) in milliseconds
as double precision value.
|
int |
getStratum()
Returns Stratum as defined in RFC-1305, which indicates the stratum level
of the local clock, with values defined as follows: 0=unspecified,
1=primary ref clock, and all others a secondary reference (via NTP).
|
private TimeStamp |
getTimestamp(int index)
Get NTP Timestamp at specified starting index.
|
TimeStamp |
getTransmitTimeStamp()
Returns the transmit timestamp as defined in RFC-1305.
|
java.lang.String |
getType()
Return type of time packet.
|
int |
getVersion()
Returns NTP version number as defined in RFC-1305.
|
int |
hashCode()
Computes a hashcode for this object.
|
private java.lang.String |
idAsHex() |
private java.lang.String |
idAsIPAddress()
Returns Reference id as dotted IP address.
|
private java.lang.String |
idAsString() |
void |
setDatagramPacket(java.net.DatagramPacket srcDp)
Set the contents of this object from source datagram packet.
|
private void |
setInt(int idx,
int value)
Set integer value at index position.
|
void |
setLeapIndicator(int li)
Set leap indicator as defined in RFC-1305.
|
void |
setMode(int mode)
Set mode as defined in RFC-1305.
|
void |
setOriginateTimeStamp(TimeStamp ts)
Set originate timestamp given NTP TimeStamp object.
|
void |
setPoll(int poll)
Set poll interval as defined in RFC-1305.
|
void |
setPrecision(int precision)
Set precision as defined in RFC-1305.
|
void |
setReceiveTimeStamp(TimeStamp ts)
Set receive timestamp given NTP TimeStamp object.
|
void |
setReferenceId(int refId)
Set reference clock identifier field with 32-bit unsigned integer value.
|
void |
setReferenceTime(TimeStamp ts)
Set Reference time with NTP timestamp.
|
void |
setRootDelay(int delay)
Set root delay as defined in RFC-1305.
|
void |
setRootDispersion(int dispersion)
Set root dispersion as defined in RFC-1305.
|
void |
setStratum(int stratum)
Set stratum level as defined in RFC-1305.
|
private void |
setTimestamp(int index,
TimeStamp t)
Sets the NTP timestamp at the given array index.
|
void |
setTransmitTime(TimeStamp ts)
Set transmit time with NTP timestamp.
|
void |
setVersion(int version)
Set NTP version as defined in RFC-1305.
|
java.lang.String |
toString()
Returns details of NTP packet as a string.
|
protected static int |
ui(byte b)
Convert byte to unsigned integer.
|
protected static long |
ul(byte b)
Convert byte to unsigned long.
|
private static final int MODE_INDEX
private static final int MODE_SHIFT
private static final int VERSION_INDEX
private static final int VERSION_SHIFT
private static final int LI_INDEX
private static final int LI_SHIFT
private static final int STRATUM_INDEX
private static final int POLL_INDEX
private static final int PRECISION_INDEX
private static final int ROOT_DELAY_INDEX
private static final int ROOT_DISPERSION_INDEX
private static final int REFERENCE_ID_INDEX
private static final int REFERENCE_TIMESTAMP_INDEX
private static final int ORIGINATE_TIMESTAMP_INDEX
private static final int RECEIVE_TIMESTAMP_INDEX
private static final int TRANSMIT_TIMESTAMP_INDEX
private final byte[] buf
private volatile java.net.DatagramPacket dp
public int getMode()
getMode
in interface NtpV3Packet
public java.lang.String getModeName()
getModeName
in interface NtpV3Packet
public void setMode(int mode)
setMode
in interface NtpV3Packet
mode
- the mode to setpublic int getLeapIndicator()
getLeapIndicator
in interface NtpV3Packet
public void setLeapIndicator(int li)
setLeapIndicator
in interface NtpV3Packet
li
- leap indicator.public int getPoll()
getPoll
in interface NtpV3Packet
public void setPoll(int poll)
setPoll
in interface NtpV3Packet
poll
- poll interval.public int getPrecision()
getPrecision
in interface NtpV3Packet
public void setPrecision(int precision)
setPrecision
in interface NtpV3Packet
precision
- the precision to setpublic int getVersion()
getVersion
in interface NtpV3Packet
public void setVersion(int version)
setVersion
in interface NtpV3Packet
version
- NTP version.public int getStratum()
getStratum
in interface NtpV3Packet
public void setStratum(int stratum)
setStratum
in interface NtpV3Packet
stratum
- stratum level.public int getRootDelay()
getRootDelay
in interface NtpV3Packet
public void setRootDelay(int delay)
setRootDelay
in interface NtpV3Packet
delay
- root delaypublic double getRootDelayInMillisDouble()
getRootDelayInMillisDouble
in interface NtpV3Packet
public int getRootDispersion()
getRootDispersion
in interface NtpV3Packet
public void setRootDispersion(int dispersion)
setRootDispersion
in interface NtpV3Packet
dispersion
- root dispersionpublic long getRootDispersionInMillis()
getRootDispersionInMillis
in interface NtpV3Packet
public double getRootDispersionInMillisDouble()
getRootDispersionInMillisDouble
in interface NtpV3Packet
public void setReferenceId(int refId)
setReferenceId
in interface NtpV3Packet
refId
- reference clock identifier.public int getReferenceId()
getReferenceId
in interface NtpV3Packet
public java.lang.String getReferenceIdString()
getReferenceIdString
in interface NtpV3Packet
private java.lang.String idAsIPAddress()
private java.lang.String idAsString()
private java.lang.String idAsHex()
public TimeStamp getTransmitTimeStamp()
getTransmitTimeStamp
in interface NtpV3Packet
public void setTransmitTime(TimeStamp ts)
ts
is null then zero time is used.setTransmitTime
in interface NtpV3Packet
ts
- NTP timestamppublic void setOriginateTimeStamp(TimeStamp ts)
ts
is null then zero time is used.setOriginateTimeStamp
in interface NtpV3Packet
ts
- NTP timestamppublic TimeStamp getOriginateTimeStamp()
getOriginateTimeStamp
in interface NtpV3Packet
public TimeStamp getReferenceTimeStamp()
getReferenceTimeStamp
in interface NtpV3Packet
TimeStamp
object.
Never returns null.public void setReferenceTime(TimeStamp ts)
ts
is null
then zero time is used.setReferenceTime
in interface NtpV3Packet
ts
- NTP timestamppublic TimeStamp getReceiveTimeStamp()
getReceiveTimeStamp
in interface NtpV3Packet
public void setReceiveTimeStamp(TimeStamp ts)
ts
is null then zero time is used.setReceiveTimeStamp
in interface NtpV3Packet
ts
- timestamppublic java.lang.String getType()
getType
in interface NtpV3Packet
private int getInt(int index)
private void setInt(int idx, int value)
idx
- index positionvalue
- 32-bit int valueprivate TimeStamp getTimestamp(int index)
index
- index into data arrayprivate long getLong(int index)
private void setTimestamp(int index, TimeStamp t)
index
- index into the byte array.t
- TimeStamp.public java.net.DatagramPacket getDatagramPacket()
getDatagramPacket
in interface NtpV3Packet
public void setDatagramPacket(java.net.DatagramPacket srcDp)
setDatagramPacket
in interface NtpV3Packet
srcDp
- source DatagramPacket to copy contents from, never null.java.lang.IllegalArgumentException
- if srcDp is null or byte length is less than minimum length of 48 bytespublic boolean equals(java.lang.Object obj)
true
if and only if the argument is
not null
and is a NtpV3Impl
object that
contains the same values as this object.equals
in class java.lang.Object
obj
- the object to compare with.true
if the objects are the same;
false
otherwise.public int hashCode()
hashCode
in class java.lang.Object
protected static final int ui(byte b)
b
- input byteprotected static final long ul(byte b)
b
- input bytepublic java.lang.String toString()
toString
in class java.lang.Object