def __init_attr_map_if_need()

in datahub/batch/binary_record.py [0:0]


    def __init_attr_map_if_need(self):
        if self._has_init_attr_map:
            return
        offset = self._record_header.attr_offset
        attr_size = byte2int(self._buffer[offset:offset+4])
        if attr_size != 0 and self._attr_map is None:
            self._attr_map = dict()

        offset += INT_BYTE_SIZE
        for i in range(attr_size):
            key_size = byte2int(self._buffer[offset:offset+4])
            offset += INT_BYTE_SIZE
            key_str = to_text(self._buffer[offset:offset+key_size])
            offset += key_size
            val_size = byte2int(self._buffer[offset:offset+4])
            offset += INT_BYTE_SIZE
            value_str = to_text(self._buffer[offset:offset+val_size])
            offset += val_size
            self._attr_map[key_str] = value_str
            self._attr_length += (key_size + val_size + 2*INT_BYTE_SIZE)
        self._has_init_attr_map = True