Author: erodriguez
Date: Wed Jan 12 21:09:46 2005
New Revision: 125037

URL: http://svn.apache.org/viewcvs?view=rev&rev=125037
Log:
Corrected reference identifier encoding behavior and updated encoder to take 
injected ByteBuffer.
Modified:
   
incubator/directory/ntp/trunk/core/src/java/org/apache/ntp/io/NtpMessageEncoder.java
   
incubator/directory/ntp/trunk/core/src/java/org/apache/ntp/message/ReferenceIdentifier.java
   
incubator/directory/ntp/trunk/core/src/java/org/apache/ntp/service/NtpServiceImpl.java
   
incubator/directory/ntp/trunk/core/src/test/org/apache/ntp/NtpMessageEncoderTest.java

Modified: 
incubator/directory/ntp/trunk/core/src/java/org/apache/ntp/io/NtpMessageEncoder.java
Url: 
http://svn.apache.org/viewcvs/incubator/directory/ntp/trunk/core/src/java/org/apache/ntp/io/NtpMessageEncoder.java?view=diff&rev=125037&p1=incubator/directory/ntp/trunk/core/src/java/org/apache/ntp/io/NtpMessageEncoder.java&r1=125036&p2=incubator/directory/ntp/trunk/core/src/java/org/apache/ntp/io/NtpMessageEncoder.java&r2=125037
==============================================================================
--- 
incubator/directory/ntp/trunk/core/src/java/org/apache/ntp/io/NtpMessageEncoder.java
        (original)
+++ 
incubator/directory/ntp/trunk/core/src/java/org/apache/ntp/io/NtpMessageEncoder.java
        Wed Jan 12 21:09:46 2005
@@ -22,31 +22,32 @@
 import org.apache.ntp.message.LeapIndicatorType;
 import org.apache.ntp.message.ModeType;
 import org.apache.ntp.message.NtpMessage;
+import org.apache.ntp.message.ReferenceIdentifier;
 
 
 public class NtpMessageEncoder
 {
-       public ByteBuffer encode( NtpMessage message )
+       public void encode( ByteBuffer byteBuffer, NtpMessage message )
        {
-               ByteBuffer buffer = ByteBuffer.allocate( 576 );
-               
                byte header = 0x00;
                header = encodeLeapIndicator( message.getLeapIndicator(), 
header );
                header = encodeVersionNumber( message.getVersionNumber(), 
header );
                header = encodeMode( message.getMode(), header );
-               buffer.put( header );
+               byteBuffer.put( header );
                
-               buffer.put( (byte)( message.getStratum().getOrdinal() & 0xFF ) 
);
-               buffer.put( (byte)( message.getPollInterval() & 0xFF ) );
-               buffer.put( (byte)( message.getPrecision() & 0xFF ) );
+               byteBuffer.put( (byte)( message.getStratum().getOrdinal() & 
0xFF ) );
+               byteBuffer.put( (byte)( message.getPollInterval() & 0xFF ) );
+               byteBuffer.put( (byte)( message.getPrecision() & 0xFF ) );
                
-               buffer.putInt( message.getRootDelay() );
-               buffer.putInt( message.getRootDispersion() );
-               buffer.putInt( message.getReferenceIdentifier().getOrdinal() );
+               byteBuffer.putInt( message.getRootDelay() );
+               byteBuffer.putInt( message.getRootDispersion() );
                
-               buffer.rewind();
+               encodeReferenceIdentifier( message.getReferenceIdentifier(), 
byteBuffer );
                
-               return buffer;
+               message.getReferenceTimestamp().writeTo( byteBuffer );
+               message.getOriginateTimestamp().writeTo( byteBuffer );
+               message.getReceiveTimestamp().writeTo( byteBuffer );
+               message.getTransmitTimestamp().writeTo( byteBuffer );
        }
        
        private byte encodeLeapIndicator( LeapIndicatorType leapIndicator, byte 
header )
@@ -65,6 +66,16 @@
        {
                byte threeBits = (byte)( mode.getOrdinal() & 0x07 );
                return (byte)( threeBits | header );
+       }
+       
+       private void encodeReferenceIdentifier( ReferenceIdentifier identifier, 
ByteBuffer byteBuffer )
+       {
+               char[] characters = identifier.getCode().toCharArray();
+               
+               for ( int ii = 0; ii < characters.length; ii++ )
+               {
+                       byteBuffer.put( (byte)characters[ ii ] );
+               }
        }
 }
 

Modified: 
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=diff&rev=125037&p1=incubator/directory/ntp/trunk/core/src/java/org/apache/ntp/message/ReferenceIdentifier.java&r1=125036&p2=incubator/directory/ntp/trunk/core/src/java/org/apache/ntp/message/ReferenceIdentifier.java&r2=125037
==============================================================================
--- 
incubator/directory/ntp/trunk/core/src/java/org/apache/ntp/message/ReferenceIdentifier.java
 (original)
+++ 
incubator/directory/ntp/trunk/core/src/java/org/apache/ntp/message/ReferenceIdentifier.java
 Wed Jan 12 21:09:46 2005
@@ -90,7 +90,12 @@
     {
                return ordinal;
        }
-
+       
+       public String getCode()
+       {
+               return code;
+       }
+       
        /// PRIVATE /////
        private final String name;
        private final String code;

Modified: 
incubator/directory/ntp/trunk/core/src/java/org/apache/ntp/service/NtpServiceImpl.java
Url: 
http://svn.apache.org/viewcvs/incubator/directory/ntp/trunk/core/src/java/org/apache/ntp/service/NtpServiceImpl.java?view=diff&rev=125037&p1=incubator/directory/ntp/trunk/core/src/java/org/apache/ntp/service/NtpServiceImpl.java&r1=125036&p2=incubator/directory/ntp/trunk/core/src/java/org/apache/ntp/service/NtpServiceImpl.java&r2=125037
==============================================================================
--- 
incubator/directory/ntp/trunk/core/src/java/org/apache/ntp/service/NtpServiceImpl.java
      (original)
+++ 
incubator/directory/ntp/trunk/core/src/java/org/apache/ntp/service/NtpServiceImpl.java
      Wed Jan 12 21:09:46 2005
@@ -36,9 +36,9 @@
                modifier.setLeapIndicator( LeapIndicatorType.NO_WARNING );
                modifier.setVersionNumber( 4 );
                modifier.setMode( ModeType.SERVER );
-               modifier.setStratum( StratumType.SECONDARY_REFERENCE );
-               modifier.setPollInterval( (byte)0x40 );
-               modifier.setPrecision( (byte)0xEC );
+               modifier.setStratum( StratumType.PRIMARY_REFERENCE );
+               modifier.setPollInterval( (byte)0x04 );
+               modifier.setPrecision( (byte)0xFA );
                modifier.setRootDelay( 0 );
                modifier.setRootDispersion( 0 );
                modifier.setReferenceIdentifier( ReferenceIdentifier.LOCL );

Modified: 
incubator/directory/ntp/trunk/core/src/test/org/apache/ntp/NtpMessageEncoderTest.java
Url: 
http://svn.apache.org/viewcvs/incubator/directory/ntp/trunk/core/src/test/org/apache/ntp/NtpMessageEncoderTest.java?view=diff&rev=125037&p1=incubator/directory/ntp/trunk/core/src/test/org/apache/ntp/NtpMessageEncoderTest.java&r1=125036&p2=incubator/directory/ntp/trunk/core/src/test/org/apache/ntp/NtpMessageEncoderTest.java&r2=125037
==============================================================================
--- 
incubator/directory/ntp/trunk/core/src/test/org/apache/ntp/NtpMessageEncoderTest.java
       (original)
+++ 
incubator/directory/ntp/trunk/core/src/test/org/apache/ntp/NtpMessageEncoderTest.java
       Wed Jan 12 21:09:46 2005
@@ -34,8 +34,6 @@
 {
        public void testEncodeMessage() throws Exception
        {
-               ByteBuffer replyByteBuffer;
-               
                NtpMessageModifier modifier = new NtpMessageModifier();
                modifier.setLeapIndicator( LeapIndicatorType.NO_WARNING );
                modifier.setVersionNumber( 4 );
@@ -56,13 +54,15 @@
                
                NtpMessage message = modifier.getNtpMessage();
                
+               ByteBuffer replyByteBuffer = ByteBuffer.allocate( 1024 );
+               
                NtpMessageEncoder encoder = new NtpMessageEncoder();
-               replyByteBuffer = encoder.encode( message );
+               encoder.encode( replyByteBuffer, message );
                
                print( message );
                
                NtpMessageDecoder decoder = new NtpMessageDecoder();
-               NtpMessage reply          = decoder.decode( replyByteBuffer );
+               NtpMessage reply = decoder.decode( replyByteBuffer );
                
                print( reply );
        }

Reply via email to