Author: erodriguez
Date: Tue Jan  4 07:41:22 2005
New Revision: 124114

URL: http://svn.apache.org/viewcvs?view=rev&rev=124114
Log:
NTP header field type implementations.
Added:
   incubator/directory/ntp/trunk/core/src/java/org/apache/ntp/message/
   
incubator/directory/ntp/trunk/core/src/java/org/apache/ntp/message/LeapIndicatorType.java
   
incubator/directory/ntp/trunk/core/src/java/org/apache/ntp/message/ModeType.java
   
incubator/directory/ntp/trunk/core/src/java/org/apache/ntp/message/ReferenceIdentifier.java
   
incubator/directory/ntp/trunk/core/src/java/org/apache/ntp/message/StratumType.java

Added: 
incubator/directory/ntp/trunk/core/src/java/org/apache/ntp/message/LeapIndicatorType.java
Url: 
http://svn.apache.org/viewcvs/incubator/directory/ntp/trunk/core/src/java/org/apache/ntp/message/LeapIndicatorType.java?view=auto&rev=124114
==============================================================================
--- (empty file)
+++ 
incubator/directory/ntp/trunk/core/src/java/org/apache/ntp/message/LeapIndicatorType.java
   Tue Jan  4 07:41:22 2005
@@ -0,0 +1,91 @@
+/*
+ *   Copyright 2005 The Apache Software Foundation
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+
+package org.apache.ntp.message;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Leap Indicator (LI): This is a two-bit code warning of an impending
+ * leap second to be inserted/deleted in the last minute of the current
+ * day, with bit 0 and bit 1, respectively, coded as follows:
+ *
+ *    LI       Value     Meaning
+ *    -------------------------------------------------------
+ *    00       0         no warning
+ *    01       1         last minute has 61 seconds
+ *    10       2         last minute has 59 seconds)
+ *    11       3         alarm condition (clock not synchronized)
+ */
+public final class LeapIndicatorType implements Comparable
+{
+       /**
+        * Enumeration elements are constructed once upon class loading.
+        * Order of appearance here determines the order of compareTo.
+        */
+       public static final LeapIndicatorType NO_WARNING           = new 
LeapIndicatorType(0, "No leap second warning.");
+       public static final LeapIndicatorType POSITIVE_LEAP_SECOND = new 
LeapIndicatorType(1, "Last minute has 61 seconds.");
+       public static final LeapIndicatorType NEGATIVE_LEAP_SECOND = new 
LeapIndicatorType(2, "Last minute has 59 seconds.");
+       public static final LeapIndicatorType ALARM_CONDITION      = new 
LeapIndicatorType(3, "Alarm condition (clock not synchronized).");
+
+       public String toString()
+    {
+               return name;
+       }
+
+       public int compareTo( Object that )
+    {
+               return ordinal - ( (LeapIndicatorType) that ).ordinal;
+       }
+
+       public static LeapIndicatorType getTypeByOrdinal( int type )
+    {
+               for ( int ii = 0; ii < values.length; ii++ )
+                       if ( values[ ii ].ordinal == type )
+                               return values[ ii ];
+               return NO_WARNING;
+       }
+       
+       public int getOrdinal()
+    {
+               return ordinal;
+       }
+
+       /// PRIVATE /////
+       private final String name;
+       private final int    ordinal;
+
+       /**
+        * Private constructor prevents construction outside of this class.
+        */
+       private LeapIndicatorType( int ordinal, String name )
+    {
+        this.ordinal = ordinal;
+               this.name    = name;
+       }
+
+       /**
+        * These two lines are all that's necessary to export a List of VALUES.
+        */
+       private static final LeapIndicatorType[] values = { NO_WARNING, 
POSITIVE_LEAP_SECOND,
+                       NEGATIVE_LEAP_SECOND, ALARM_CONDITION };
+       // VALUES needs to be located here, otherwise illegal forward reference
+       public static final List VALUES = Collections.unmodifiableList( 
Arrays.asList( values ) );
+}
+

Added: 
incubator/directory/ntp/trunk/core/src/java/org/apache/ntp/message/ModeType.java
Url: 
http://svn.apache.org/viewcvs/incubator/directory/ntp/trunk/core/src/java/org/apache/ntp/message/ModeType.java?view=auto&rev=124114
==============================================================================
--- (empty file)
+++ 
incubator/directory/ntp/trunk/core/src/java/org/apache/ntp/message/ModeType.java
    Tue Jan  4 07:41:22 2005
@@ -0,0 +1,98 @@
+/*
+ *   Copyright 2005 The Apache Software Foundation
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+
+package org.apache.ntp.message;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Mode: This is a three-bit integer indicating the mode, with values
+ * defined as follows:
+ *
+ *    Mode     Meaning
+ *    ------------------------------------
+ *    0        reserved
+ *    1        symmetric active
+ *    2        symmetric passive
+ *    3        client
+ *    4        server
+ *    5        broadcast
+ *    6        reserved for NTP control message
+ *    7        reserved for private use
+ */
+public final class ModeType implements Comparable
+{
+       /**
+        * Enumeration elements are constructed once upon class loading.
+        * Order of appearance here determines the order of compareTo.
+        */
+       public static final ModeType RESERVED                 = new ModeType(0, 
"Reserved mode.");
+       public static final ModeType SYMMETRIC_ACTIVE         = new ModeType(1, 
"Symmetric active mode.");
+       public static final ModeType RESERVED_PASSIVE         = new ModeType(2, 
"Symmetric passive mode.");
+       public static final ModeType CLIENT                   = new ModeType(3, 
"Client mode.");
+       public static final ModeType SERVER                   = new ModeType(4, 
"Server mode.");
+       public static final ModeType BROADCAST                = new ModeType(5, 
"Broadcast mode.");
+       public static final ModeType RESERVED_FOR_NTP_CONTROL = new ModeType(6, 
"Reserved for NTP control message.");
+       public static final ModeType RESERVED_FOR_PRIVATE_USE = new ModeType(7, 
"Reserved for private use.");
+       
+       public String toString()
+    {
+               return name;
+       }
+
+       public int compareTo( Object that )
+    {
+               return ordinal - ( (ModeType) that ).ordinal;
+       }
+
+       public static ModeType getTypeByOrdinal( int type )
+    {
+               for ( int ii = 0; ii < values.length; ii++ )
+                       if ( values[ ii ].ordinal == type )
+                               return values[ ii ];
+               return SERVER;
+       }
+       
+       public int getOrdinal()
+    {
+               return ordinal;
+       }
+
+       /// PRIVATE /////
+       private final String name;
+       private final int    ordinal;
+
+       /**
+        * Private constructor prevents construction outside of this class.
+        */
+       private ModeType( int ordinal, String name )
+    {
+        this.ordinal = ordinal;
+               this.name    = name;
+       }
+
+       /**
+        * These two lines are all that's necessary to export a List of VALUES.
+        */
+       private static final ModeType[] values = { RESERVED, SYMMETRIC_ACTIVE, 
RESERVED_PASSIVE,
+                       CLIENT, SERVER, BROADCAST, RESERVED_FOR_NTP_CONTROL, 
RESERVED_FOR_PRIVATE_USE };
+       // VALUES needs to be located here, otherwise illegal forward reference
+       public static final List VALUES = Collections.unmodifiableList( 
Arrays.asList( values ) );
+}
+

Added: 
incubator/directory/ntp/trunk/core/src/java/org/apache/ntp/message/ReferenceIdentifier.java
Url: 
http://svn.apache.org/viewcvs/incubator/directory/ntp/trunk/core/src/java/org/apache/ntp/message/ReferenceIdentifier.java?view=auto&rev=124114
==============================================================================
--- (empty file)
+++ 
incubator/directory/ntp/trunk/core/src/java/org/apache/ntp/message/ReferenceIdentifier.java
 Tue Jan  4 07:41:22 2005
@@ -0,0 +1,117 @@
+/*
+ *   Copyright 2005 The Apache Software Foundation
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+
+package org.apache.ntp.message;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Reference Identifier: This is a 32-bit bitstring identifying the
+ * particular reference source. In the case of NTP Version 3 or Version
+ * 4 stratum-0 (unspecified) or stratum-1 (primary) servers, this is a
+ * four-character ASCII string, left justified and zero padded to 32
+ * bits. In NTP Version 3 secondary servers, this is the 32-bit IPv4
+ * address of the reference source. In NTP Version 4 secondary servers,
+ * this is the low order 32 bits of the latest transmit timestamp of the
+ * reference source. NTP primary (stratum 1) servers should set this
+ * field to a code identifying the external reference source according
+ * to the following list. If the external reference is one of those
+ * listed, the associated code should be used. Codes for sources not
+ * listed can be contrived as appropriate.
+ */
+public class ReferenceIdentifier implements Comparable
+{
+       /**
+        * Enumeration elements are constructed once upon class loading.
+        * Order of appearance here determines the order of compareTo.
+        */
+       public static final ReferenceIdentifier INIT = new 
ReferenceIdentifier(0,  "INIT", "initializing");
+       public static final ReferenceIdentifier LOCL = new 
ReferenceIdentifier(1,  "LOCL", "uncalibrated local clock");
+       public static final ReferenceIdentifier PPS  = new 
ReferenceIdentifier(2,  "PPL", "pulse-per-second source");
+       public static final ReferenceIdentifier ACTS = new 
ReferenceIdentifier(3,  "ACTS", "NIST dialup modem service");
+       public static final ReferenceIdentifier USNO = new 
ReferenceIdentifier(4,  "USNO", "USNO modem service");
+       public static final ReferenceIdentifier PTB  = new 
ReferenceIdentifier(5,  "PTB", "PTB (Germany) modem service");
+       public static final ReferenceIdentifier TDF  = new 
ReferenceIdentifier(6,  "TDF", "Allouis (France) Radio 164 kHz");
+       public static final ReferenceIdentifier DCF  = new 
ReferenceIdentifier(7,  "DCF", "Mainflingen (Germany) Radio 77.5 kHz");
+       public static final ReferenceIdentifier MSF  = new 
ReferenceIdentifier(8,  "MSF", "Rugby (UK) Radio 60 kHz");
+       public static final ReferenceIdentifier WWV  = new 
ReferenceIdentifier(9,  "WWV", "Ft. Collins (US) Radio 2.5, 5, 10, 15, 20 MHz");
+       public static final ReferenceIdentifier WWVB = new 
ReferenceIdentifier(10, "WWVB", "Boulder (US) Radio 60 kHz");
+       public static final ReferenceIdentifier WWVH = new 
ReferenceIdentifier(11, "WWVH", "Kaui Hawaii (US) Radio 2.5, 5, 10, 15 MHz");
+       public static final ReferenceIdentifier CHU  = new 
ReferenceIdentifier(12, "CHU", "Ottawa (Canada) Radio 3330, 7335, 14670 kHz");
+       public static final ReferenceIdentifier LORC = new 
ReferenceIdentifier(13, "LORC", "LORAN-C radionavigation system");
+       public static final ReferenceIdentifier OMEG = new 
ReferenceIdentifier(14, "OMEG", "OMEGA radionavigation system");
+       public static final ReferenceIdentifier GPS  = new 
ReferenceIdentifier(15, "GPS", "Global Positioning Service");
+       public static final ReferenceIdentifier GOES = new 
ReferenceIdentifier(16, "GOES", "Geostationary Orbit Environment Satellite");
+       public static final ReferenceIdentifier CDMA = new 
ReferenceIdentifier(17, "CDMA", "CDMA mobile cellular/PCS telephone system");
+       
+       public String toString()
+    {
+               return name;
+       }
+
+       public int compareTo( Object that )
+    {
+               return ordinal - ( (ReferenceIdentifier) that ).ordinal;
+       }
+
+       public static ReferenceIdentifier getTypeByOrdinal( int type )
+    {
+               for ( int ii = 0; ii < values.length; ii++ )
+                       if ( values[ ii ].ordinal == type )
+                               return values[ ii ];
+               return LOCL;
+       }
+       
+       public static ReferenceIdentifier getTypeByName( String type )
+    {
+               for ( int ii = 0; ii < values.length; ii++ )
+                       if ( values[ ii ].code.equalsIgnoreCase( type ) )
+                               return values[ ii ];
+               return LOCL;
+       }
+       
+       public int getOrdinal()
+    {
+               return ordinal;
+       }
+
+       /// PRIVATE /////
+       private final String name;
+       private final String code;
+       private final int    ordinal;
+
+       /**
+        * Private constructor prevents construction outside of this class.
+        */
+       private ReferenceIdentifier( int ordinal, String code, String name )
+    {
+        this.ordinal = ordinal;
+        this.code    = code;
+               this.name    = name;
+       }
+
+       /**
+        * These two lines are all that's necessary to export a List of VALUES.
+        */
+       private static final ReferenceIdentifier[] values = { INIT, LOCL, PPS, 
ACTS, USNO, PTB, TDF,
+                       DCF, MSF, WWV, WWVB, WWVH, CHU, LORC, OMEG, GPS, GOES, 
CDMA };
+       // VALUES needs to be located here, otherwise illegal forward reference
+       public static final List VALUES = Collections.unmodifiableList( 
Arrays.asList( values ) );
+}
+

Added: 
incubator/directory/ntp/trunk/core/src/java/org/apache/ntp/message/StratumType.java
Url: 
http://svn.apache.org/viewcvs/incubator/directory/ntp/trunk/core/src/java/org/apache/ntp/message/StratumType.java?view=auto&rev=124114
==============================================================================
--- (empty file)
+++ 
incubator/directory/ntp/trunk/core/src/java/org/apache/ntp/message/StratumType.java
 Tue Jan  4 07:41:22 2005
@@ -0,0 +1,89 @@
+/*
+ *   Copyright 2005 The Apache Software Foundation
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ *
+ */
+
+package org.apache.ntp.message;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Stratum: This is a eight-bit unsigned integer indicating the stratum
+ * level of the local clock, with values defined as follows:
+ *
+ *    Stratum  Meaning
+ *    ----------------------------------------------
+ *    0        unspecified or unavailable
+ *    1        primary reference (e.g., radio clock)
+ *    2-15     secondary reference (via NTP or SNTP)
+ *    16-255   reserved
+ */
+public final class StratumType implements Comparable
+{
+       /**
+        * Enumeration elements are constructed once upon class loading.
+        * Order of appearance here determines the order of compareTo.
+        */
+       public static final StratumType UNSPECIFIED         = new 
StratumType(0, "Unspecified or unavailable.");
+       public static final StratumType PRIMARY_REFERENCE   = new 
StratumType(1, "Primary reference.");
+       public static final StratumType SECONDARY_REFERENCE = new 
StratumType(2, "Secondary reference.");
+       
+       public String toString()
+    {
+               return name;
+       }
+
+       public int compareTo( Object that )
+    {
+               return ordinal - ( (StratumType) that ).ordinal;
+       }
+
+       public static StratumType getTypeByOrdinal( int type )
+    {
+               for ( int ii = 0; ii < values.length; ii++ )
+                       if ( values[ ii ].ordinal == type )
+                               return values[ ii ];
+               return UNSPECIFIED;
+       }
+       
+       public int getOrdinal()
+    {
+               return ordinal;
+       }
+
+       /// PRIVATE /////
+       private final String name;
+       private final int    ordinal;
+
+       /**
+        * Private constructor prevents construction outside of this class.
+        */
+       private StratumType( int ordinal, String name )
+    {
+        this.ordinal = ordinal;
+               this.name    = name;
+       }
+
+       /**
+        * These two lines are all that's necessary to export a List of VALUES.
+        */
+       private static final StratumType[] values = { UNSPECIFIED, 
PRIMARY_REFERENCE,
+                       SECONDARY_REFERENCE };
+       // VALUES needs to be located here, otherwise illegal forward reference
+       public static final List VALUES = Collections.unmodifiableList( 
Arrays.asList( values ) );
+}
+

Reply via email to