1717
1818import  uk .co .real_logic .sbe .PrimitiveType ;
1919import  uk .co .real_logic .sbe .codec .java .DirectBuffer ;
20- import  uk .co .real_logic .sbe .ir .generated .SerializedFrame ;
21- import  uk .co .real_logic .sbe .ir .generated .SerializedToken ;
20+ import  uk .co .real_logic .sbe .ir .generated .FrameCodec ;
21+ 
22+ import  uk .co .real_logic .sbe .ir .generated .TokenCodec ;
2223
2324import  java .io .*;
2425import  java .nio .ByteBuffer ;
2728import  java .util .ArrayList ;
2829import  java .util .List ;
2930
31+ import  static  uk .co .real_logic .sbe .ir .IrUtil .*;
32+ 
3033public  class  Decoder  implements  Closeable 
3134{
3235 private  static  final  int  CAPACITY  = 4096 ;
3336
3437 private  final  FileChannel  channel ;
3538 private  final  DirectBuffer  directBuffer ;
36-  private  final  SerializedFrame   serializedFrame  = new  SerializedFrame ();
37-  private  final  SerializedToken   serializedToken  = new  SerializedToken ();
39+  private  final  FrameCodec   frameCodec  = new  FrameCodec ();
40+  private  final  TokenCodec   tokenCodec  = new  TokenCodec ();
3841 private  int  offset ;
3942 private  final  long  size ;
4043 private  String  irPackageName  = null ;
@@ -139,20 +142,19 @@ private int captureMessage(final List<Token> tokens, int index, final Intermedia
139142
140143 private  void  decodeFrame ()
141144 {
142-  serializedFrame .wrapForDecode (directBuffer , offset , serializedFrame .blockLength (), 0 );
145+  frameCodec .wrapForDecode (directBuffer , offset , frameCodec .blockLength (), 0 );
143146
144-  if  (serializedFrame .sbeIrVersion () != 0 )
147+  if  (frameCodec .sbeIrVersion () != 0 )
145148 {
146-  throw  new  IllegalStateException ("Unknown SBE version: "  + serializedFrame .sbeIrVersion ());
149+  throw  new  IllegalStateException ("Unknown SBE version: "  + frameCodec .sbeIrVersion ());
147150 }
148151
149-  final  byte [] byteArray  = new  byte [1024 ];
150- 
151-  irVersion  = serializedFrame .schemaVersion ();
152+  final  byte [] buffer  = new  byte [1024 ];
152153
153-  irPackageName  = new  String (byteArray , 0 , serializedFrame .getPackageVal (byteArray , 0 , byteArray .length ));
154+  irVersion  = frameCodec .schemaVersion ();
155+  irPackageName  = new  String (buffer , 0 , frameCodec .getPackageVal (buffer , 0 , buffer .length ));
154156
155-  offset  += serializedFrame .size ();
157+  offset  += frameCodec .size ();
156158 }
157159
158160 private  Token  decodeToken ()
@@ -161,32 +163,46 @@ private Token decodeToken()
161163 final  Token .Builder  tokenBuilder  = new  Token .Builder ();
162164 final  Encoding .Builder  encBuilder  = new  Encoding .Builder ();
163165
164-  final  byte [] byteArray  = new  byte [1024 ];
166+  final  byte [] buffer  = new  byte [1024 ];
167+ 
168+  tokenCodec .wrapForDecode (directBuffer , offset , tokenCodec .blockLength (), 0 );
169+ 
170+  tokenBuilder .offset (tokenCodec .tokenOffset ())
171+  .size (tokenCodec .tokenSize ())
172+  .schemaId (tokenCodec .schemaId ())
173+  .version (tokenCodec .tokenVersion ())
174+  .signal (mapSignal (tokenCodec .signal ()));
175+ 
176+  final  PrimitiveType  type  = mapPrimitiveType (tokenCodec .primitiveType ());
165177
166-  serializedToken .wrapForDecode (directBuffer , offset , serializedToken .blockLength (), 0 );
178+  encBuilder .primitiveType (mapPrimitiveType (tokenCodec .primitiveType ()))
179+  .byteOrder (mapByteOrder (tokenCodec .byteOrder ()))
180+  .presence (mapPresence (tokenCodec .presence ()));
167181
168-  tokenBuilder .offset (serializedToken .tokenOffset ())
169-  .size (serializedToken .tokenSize ())
170-  .schemaId (serializedToken .schemaID ())
171-  .version (serializedToken .tokenVersion ())
172-  .signal (IrUtil .signal (serializedToken .signal ()));
182+  tokenBuilder .name (new  String (buffer , 0 , tokenCodec .getName (buffer , 0 , buffer .length ), TokenCodec .nameCharacterEncoding ()));
173183
174-  final  PrimitiveType  type  = IrUtil .primitiveType (serializedToken .primitiveType ());
184+  encBuilder .constVal (get (valBuffer , type , tokenCodec .getConstVal (valArray , 0 , valArray .length )));
185+  encBuilder .minVal (get (valBuffer , type , tokenCodec .getMinVal (valArray , 0 , valArray .length )));
186+  encBuilder .maxVal (get (valBuffer , type , tokenCodec .getMaxVal (valArray , 0 , valArray .length )));
187+  encBuilder .nullVal (get (valBuffer , type , tokenCodec .getNullVal (valArray , 0 , valArray .length )));
175188
176-  encBuilder .primitiveType (type )
177-  .byteOrder (IrUtil .byteOrder (serializedToken .byteOrder ()));
189+  final  String  characterEncoding  = new  String (buffer , 0 , tokenCodec .getCharacterEncoding (buffer , 0 , buffer .length ),
190+  TokenCodec .characterEncodingCharacterEncoding ());
191+  encBuilder .characterEncoding (characterEncoding .isEmpty () ? null  : characterEncoding );
178192
179-  tokenBuilder .name (new  String (byteArray , 0 , serializedToken .getName (byteArray , 0 , byteArray .length ), SerializedToken .nameCharacterEncoding ()));
193+  final  String  epoch  = new  String (buffer , 0 , tokenCodec .getEpoch (buffer , 0 , buffer .length ),
194+  TokenCodec .epochCharacterEncoding ());
195+  encBuilder .epoch (epoch .isEmpty () ? null  : epoch );
180196
181-  encBuilder .constVal (IrUtil .getVal (valBuffer , type , serializedToken .getConstVal (valArray , 0 , valArray .length )));
182-  encBuilder .minVal (IrUtil .getVal (valBuffer , type , serializedToken .getMinVal (valArray , 0 , valArray .length )));
183-  encBuilder .maxVal (IrUtil .getVal (valBuffer , type , serializedToken .getMaxVal (valArray , 0 , valArray .length )));
184-  encBuilder .nullVal (IrUtil .getVal (valBuffer , type , serializedToken .getNullVal (valArray , 0 , valArray .length )));
197+  final  String  timeUnit  = new  String (buffer , 0 , tokenCodec .getTimeUnit (buffer , 0 , buffer .length ),
198+  TokenCodec .timeUnitCharacterEncoding ());
199+  encBuilder .timeUnit (timeUnit .isEmpty () ? null  : timeUnit );
185200
186-  final  int  charEncodingSize  = serializedToken .getCharacterEncoding (byteArray , 0 , byteArray .length );
187-  encBuilder .characterEncoding (new  String (byteArray , 0 , charEncodingSize , SerializedToken .characterEncodingCharacterEncoding ()));
201+  final  String  semanticType  = new  String (buffer , 0 , tokenCodec .getSemanticType (buffer , 0 , buffer .length ),
202+  TokenCodec .semanticTypeCharacterEncoding ());
203+  encBuilder .semanticType (semanticType .isEmpty () ? null  : semanticType );
188204
189-  offset  += serializedToken .size ();
205+  offset  += tokenCodec .size ();
190206
191207 return  tokenBuilder .encoding (encBuilder .build ()).build ();
192208 }
0 commit comments