handle read of the value based on the expected length
        :param buff:
        :param start:
        :param end:

def handle_read_value(self, buff, start, end):
        '''
            handle read of the value based on the expected length
        :param buff:
        :param start:
        :param end:
        '''
        segmenttype = self._state[1].value.segmenttype
        
        value = None
        eventtype = None
        ftype = self._state[0]
        # parsing value 
        if segmenttype <= SegmentType.VARIABLE_LENGTH_VALUE:
            self._scstate = self.next_state_afterraw()
            value = self.parse_value(self._state[0], buff, start, end)
            eventtype = EventType.VALUE 
        # next we should expect length
        elif segmenttype >= SegmentType.EXT_FORMAT:
            value = self.parse_ext_value(self._state[0], self._state[4], buff, start, end)
            eventtype = EventType.EXT
            ftype = ExtType(self._state[0], self._state[4])
        else:
            raise InvalidStateException(self._scstate, "header")
        self.events.append((self.value_event_type(eventtype), ftype, value))