private boolean readMetaData ( ) throws IOException { SegmentExtent metaExtentInit = new SegmentExtent ( 0 , 0 , META_SEGMENT_SIZE ) ; try ( InSegment reader = openRead ( metaExtentInit ) ) { ReadStream is = reader . in ( ) ; if ( ! readMetaDataHeader ( is ) ) { return false ; } _segmentId = 1 ; } int metaLength = _segmentMeta [ 0 ] . size ( ) ; SegmentExtent metaExtent = new SegmentExtent ( 0 , 0 , metaLength ) ; _metaExtents . clear ( ) ; _metaExtents . add ( metaExtent ) ; _metaAddress = 0 ; _metaOffset = META_OFFSET ; _metaTail = _metaOffset + metaLength ; while ( true ) { try ( InSegment reader = openRead ( metaExtent ) ) { ReadStream is = reader . in ( ) ; if ( metaExtent . address ( ) == 0 ) { is . position ( META_OFFSET ) ; } long metaAddress = _metaAddress ; while ( readMetaDataEntry ( is ) ) { } if ( _metaAddress == metaAddress ) { return true ; } metaExtent = new SegmentExtent ( 0 , _metaAddress , metaLength ) ; } } }
Reads metadata header for entire database .