private void writeMetaContinuation ( ) { TempBuffer tBuf = TempBuffer . create ( ) ; byte [ ] buffer = tBuf . buffer ( ) ; int metaLength = _segmentMeta [ 0 ] . size ( ) ; SegmentExtent extent = new SegmentExtent ( 0 , _addressTail , metaLength ) ; _metaExtents . add ( extent ) ; _addressTail += metaLength ; int offset = 0 ; buffer [ offset ++ ] = CODE_META_SEGMENT ; long address = extent . address ( ) ; int length = extent . length ( ) ; long value = ( address & ~ 0xffff ) | ( length >> 16 ) ; offset += BitsUtil . writeLong ( buffer , offset , value ) ; int crc = _nonce ; crc = Crc32Caucho . generate ( crc , buffer , 0 , offset ) ; offset += BitsUtil . writeInt ( buffer , offset , crc ) ; try ( OutStore sOut = openWrite ( _metaOffset , offset ) ) { sOut . write ( _metaOffset , buffer , 0 , offset ) ; } tBuf . free ( ) ; _metaAddress = address ; _metaOffset = address ; _metaTail = address + length ; }
Writes a continuation entry which points to a new meta - data segment .