cdm/src/main/java/ucar/nc2/iosp/hdf5/H5header.java
int read(long filePos, int version, boolean creationOrderPresent, String objectName) throws IOException {
      this.start = filePos;
      raf.seek(filePos);
      if (debugPos) {
        log.debug("  --> Message Header starts at =" + raf.getFilePointer());
      }

      if (version == 1) {
        type = raf.readShort();
        size = DataType.unsignedShortToInt(raf.readShort());
        headerMessageFlags = raf.readByte();
        raf.skipBytes(3);
        header_length = 8;

      } else {
        type = (short) raf.readByte();
        size = DataType.unsignedShortToInt(raf.readShort());
        //if (size > Short.MAX_VALUE)
        //  log.debug("HEY");

        headerMessageFlags = raf.readByte();
        header_length = 4;
        if (creationOrderPresent) {
          creationOrder = raf.readShort();
          header_length += 2;
        }
      }
      mtype = MessageType.getType(type);
      if (debug1) {
        log.debug("  -->" + mtype + " messageSize=" + size + " flags = " + Integer.toBinaryString(headerMessageFlags));
        if (creationOrderPresent && debugCreationOrder) {
            log.debug("     creationOrder = " + creationOrder);
        }
      }
      if (debugPos) {
        log.debug("  --> Message Data starts at=" + raf.getFilePointer());
      }

      if ((headerMessageFlags & 2) != 0) { // shared
        messData = getSharedDataObject(mtype).mdt; // eg a shared datatype, eg enums
        return header_length + size;
      }

      if (mtype == MessageType.NIL) { // 0
        // dont do nuttin

      } else if (mtype == MessageType.SimpleDataspace) { // 1
        MessageDataspace data = new MessageDataspace();
        data.read();
        messData = data;

      } else if (mtype == MessageType.GroupNew) { // 2
        MessageGroupNew data = new MessageGroupNew();
        data.read();
        messData = data;

      } else if (mtype == MessageType.Datatype) { // 3
        MessageDatatype data = new MessageDatatype();
        data.read(objectName);
        messData = data;

      } else if (mtype == MessageType.FillValueOld) { // 4
        MessageFillValueOld data = new MessageFillValueOld();
        data.read();
        messData = data;

      } else if (mtype == MessageType.FillValue) { // 5
        MessageFillValue data = new MessageFillValue();
        data.read();
        messData = data;

      } else if (mtype == MessageType.Link) { // 6
        MessageLink data = new MessageLink();
        data.read();
        messData = data;

      } else if (mtype == MessageType.Layout) { // 8
        MessageLayout data = new MessageLayout();
        data.read();
        messData = data;

      } else if (mtype == MessageType.GroupInfo) { // 10
        MessageGroupInfo data = new MessageGroupInfo();
        data.read();
        messData = data;

      } else if (mtype == MessageType.FilterPipeline) { // 11
        MessageFilter data = new MessageFilter();
        data.read();
        messData = data;

      } else if (mtype == MessageType.Attribute) { // 12
        MessageAttribute data = new MessageAttribute();
        data.read(raf.getFilePointer());
        messData = data;

      } else if (mtype == MessageType.Comment) { // 13
        MessageComment data = new MessageComment();
        data.read();
        messData = data;

      } else if (mtype == MessageType.LastModifiedOld) { // 14
        MessageLastModifiedOld data = new MessageLastModifiedOld();
        data.read();
        messData = data;

      } else if (mtype == MessageType.ObjectHeaderContinuation) { // 16
        MessageContinue data = new MessageContinue();
        data.read();
        messData = data;

      } else if (mtype == MessageType.Group) { // 17
        MessageGroup data = new MessageGroup();
        data.read();
        messData = data;

      } else if (mtype == MessageType.LastModified) { // 18
        MessageLastModified data = new MessageLastModified();
        data.read();
        messData = data;

      } else if (mtype == MessageType.AttributeInfo) { // 21
        MessageAttributeInfo data = new MessageAttributeInfo();
        data.read();
        messData = data;

      } else if (mtype == MessageType.ObjectReferenceCount) { // 21
        MessageObjectReferenceCount data = new MessageObjectReferenceCount();
        data.read();
        messData = data;

      } else {
        log.debug("****UNPROCESSED MESSAGE type = " + mtype + " raw = " + type);
        log.warn("SKIP UNPROCESSED MESSAGE type = " + mtype + " raw = " + type);
        //throw new UnsupportedOperationException("****UNPROCESSED MESSAGE type = " + mtype + " raw = " + type);
      }

      return header_length + size;
    }
int read(long filePos, int version, boolean creationOrderPresent, String objectName) throws IOException {
      this.start = filePos;
      raf.seek(filePos);
      if (debugPos) {
        log.debug("  --> Message Header starts at =" + raf.getFilePointer());
      }

      if (version == 1) {
        type = raf.readShort();
        size = DataType.unsignedShortToInt(raf.readShort());
        headerMessageFlags = raf.readByte();
        raf.skipBytes(3);
        header_length = 8;

      } else {
        type = (short) raf.readByte();
        size = DataType.unsignedShortToInt(raf.readShort());
        //if (size > Short.MAX_VALUE)
        //  log.debug("HEY");

        headerMessageFlags = raf.readByte();
        header_length = 4;
        if (creationOrderPresent) {
          creationOrder = raf.readShort();
          header_length += 2;
        }
      }
      mtype = MessageType.getType(type);
      if (debug1) {
        log.debug("  -->" + mtype + " messageSize=" + size + " flags = " + Integer.toBinaryString(headerMessageFlags));
        if (creationOrderPresent && debugCreationOrder) {
            log.debug("     creationOrder = " + creationOrder);
        }
      }
      if (debugPos) {
        log.debug("  --> Message Data starts at=" + raf.getFilePointer());
      }

      if ((headerMessageFlags & 2) != 0) { // shared
        messData = getSharedDataObject(mtype).mdt; // eg a shared datatype, eg enums
        return header_length + size;
      }

      if (mtype == MessageType.NIL) { // 0
        // dont do nuttin

      } else if (mtype == MessageType.SimpleDataspace) { // 1
        MessageDataspace data = new MessageDataspace();
        data.read();
        messData = data;

      } else if (mtype == MessageType.GroupNew) { // 2
        MessageGroupNew data = new MessageGroupNew();
        data.read();
        messData = data;

      } else if (mtype == MessageType.Datatype) { // 3
        MessageDatatype data = new MessageDatatype();
        data.read(objectName);
        messData = data;

      } else if (mtype == MessageType.FillValueOld) { // 4
        MessageFillValueOld data = new MessageFillValueOld();
        data.read();
        messData = data;

      } else if (mtype == MessageType.FillValue) { // 5
        MessageFillValue data = new MessageFillValue();
        data.read();
        messData = data;

      } else if (mtype == MessageType.Link) { // 6
        MessageLink data = new MessageLink();
        data.read();
        messData = data;

      } else if (mtype == MessageType.Layout) { // 8
        MessageLayout data = new MessageLayout();
        data.read();
        messData = data;

      } else if (mtype == MessageType.GroupInfo) { // 10
        MessageGroupInfo data = new MessageGroupInfo();
        data.read();
        messData = data;

      } else if (mtype == MessageType.FilterPipeline) { // 11
        MessageFilter data = new MessageFilter();
        data.read();
        messData = data;

      } else if (mtype == MessageType.Attribute) { // 12
        MessageAttribute data = new MessageAttribute();
        data.read(raf.getFilePointer());
        messData = data;

      } else if (mtype == MessageType.Comment) { // 13
        MessageComment data = new MessageComment();
        data.read();
        messData = data;

      } else if (mtype == MessageType.LastModifiedOld) { // 14
        MessageLastModifiedOld data = new MessageLastModifiedOld();
        data.read();
        messData = data;

      } else if (mtype == MessageType.ObjectHeaderContinuation) { // 16
        MessageContinue data = new MessageContinue();
        data.read();
        messData = data;

      } else if (mtype == MessageType.Group) { // 17
        MessageGroup data = new MessageGroup();
        data.read();
        messData = data;

      } else if (mtype == MessageType.LastModified) { // 18
        MessageLastModified data = new MessageLastModified();
        data.read();
        messData = data;

      } else if (mtype == MessageType.AttributeInfo) { // 21
        MessageAttributeInfo data = new MessageAttributeInfo();
        data.read();
        messData = data;

      } else if (mtype == MessageType.ObjectReferenceCount) { // 21
        MessageObjectReferenceCount data = new MessageObjectReferenceCount();
        data.read();
        messData = data;

      } else {
        log.debug("****UNPROCESSED MESSAGE type = " + mtype + " raw = " + type);
        log.warn("SKIP UNPROCESSED MESSAGE type = " + mtype + " raw = " + type);
        //throw new UnsupportedOperationException("****UNPROCESSED MESSAGE type = " + mtype + " raw = " + type);
      }

      return header_length + size;
    }
int read ( long filePos , int version , boolean creationOrderPresent , String objectName ) throws IOException { this . start = filePos ; raf . seek ( filePos ) ; if ( debugPos ) { log . debug ( "  --> Message Header starts at =" + raf . getFilePointer ( ) ) ; } if ( version == 1 ) { type = raf . readShort ( ) ; size = DataType . unsignedShortToInt ( raf . readShort ( ) ) ; headerMessageFlags = raf . readByte ( ) ; raf . skipBytes ( 3 ) ; header_length = 8 ; } else { type = ( short ) raf . readByte ( ) ; size = DataType . unsignedShortToInt ( raf . readShort ( ) ) ; //if (size > Short.MAX_VALUE) //  log.debug("HEY"); headerMessageFlags = raf . readByte ( ) ; header_length = 4 ; if ( creationOrderPresent ) { creationOrder = raf . readShort ( ) ; header_length += 2 ; } } mtype = MessageType . getType ( type ) ; if ( debug1 ) { log . debug ( "  -->" + mtype + " messageSize=" + size + " flags = " + Integer . toBinaryString ( headerMessageFlags ) ) ; if ( creationOrderPresent && debugCreationOrder ) { log . debug ( "     creationOrder = " + creationOrder ) ; } } if ( debugPos ) { log . debug ( "  --> Message Data starts at=" + raf . getFilePointer ( ) ) ; } if ( ( headerMessageFlags & 2 ) != 0 ) { // shared messData = getSharedDataObject ( mtype ) . mdt ; // eg a shared datatype, eg enums return header_length + size ; } if ( mtype == MessageType . NIL ) { // 0 // dont do nuttin } else if ( mtype == MessageType . SimpleDataspace ) { // 1 MessageDataspace data = new MessageDataspace ( ) ; data . read ( ) ; messData = data ; } else if ( mtype == MessageType . GroupNew ) { // 2 MessageGroupNew data = new MessageGroupNew ( ) ; data . read ( ) ; messData = data ; } else if ( mtype == MessageType . Datatype ) { // 3 MessageDatatype data = new MessageDatatype ( ) ; data . read ( objectName ) ; messData = data ; } else if ( mtype == MessageType . FillValueOld ) { // 4 MessageFillValueOld data = new MessageFillValueOld ( ) ; data . read ( ) ; messData = data ; } else if ( mtype == MessageType . FillValue ) { // 5 MessageFillValue data = new MessageFillValue ( ) ; data . read ( ) ; messData = data ; } else if ( mtype == MessageType . Link ) { // 6 MessageLink data = new MessageLink ( ) ; data . read ( ) ; messData = data ; } else if ( mtype == MessageType . Layout ) { // 8 MessageLayout data = new MessageLayout ( ) ; data . read ( ) ; messData = data ; } else if ( mtype == MessageType . GroupInfo ) { // 10 MessageGroupInfo data = new MessageGroupInfo ( ) ; data . read ( ) ; messData = data ; } else if ( mtype == MessageType . FilterPipeline ) { // 11 MessageFilter data = new MessageFilter ( ) ; data . read ( ) ; messData = data ; } else if ( mtype == MessageType . Attribute ) { // 12 MessageAttribute data = new MessageAttribute ( ) ; data . read ( raf . getFilePointer ( ) ) ; messData = data ; } else if ( mtype == MessageType . Comment ) { // 13 MessageComment data = new MessageComment ( ) ; data . read ( ) ; messData = data ; } else if ( mtype == MessageType . LastModifiedOld ) { // 14 MessageLastModifiedOld data = new MessageLastModifiedOld ( ) ; data . read ( ) ; messData = data ; } else if ( mtype == MessageType . ObjectHeaderContinuation ) { // 16 MessageContinue data = new MessageContinue ( ) ; data . read ( ) ; messData = data ; } else if ( mtype == MessageType . Group ) { // 17 MessageGroup data = new MessageGroup ( ) ; data . read ( ) ; messData = data ; } else if ( mtype == MessageType . LastModified ) { // 18 MessageLastModified data = new MessageLastModified ( ) ; data . read ( ) ; messData = data ; } else if ( mtype == MessageType . AttributeInfo ) { // 21 MessageAttributeInfo data = new MessageAttributeInfo ( ) ; data . read ( ) ; messData = data ; } else if ( mtype == MessageType . ObjectReferenceCount ) { // 21 MessageObjectReferenceCount data = new MessageObjectReferenceCount ( ) ; data . read ( ) ; messData = data ; } else { log . debug ( "****UNPROCESSED MESSAGE type = " + mtype + " raw = " + type ) ; log . warn ( "SKIP UNPROCESSED MESSAGE type = " + mtype + " raw = " + type ) ; //throw new UnsupportedOperationException("****UNPROCESSED MESSAGE type = " + mtype + " raw = " + type); } return header_length + size ; }
Read a message

@param filePos              at this filePos
@param version              header version
@param creationOrderPresent true if bit2 of data object header flags is set
@return number of bytes read
@throws IOException of read error
Read a message