handle read of number bytes needed to parse the value 
        :param buff:
        :param start:
        :param end:

def handle_read_length(self, buff, start, end):        
        '''
            handle read of number bytes needed to parse the value 
        :param buff:
        :param start:
        :param end:
        '''
        self.set_state_length(self._state, self.parse_uint(buff, start, end) * self._state[1].value.multiplier)
    
        if self._state[1].value.valuetype is ValueType.NESTED:
            self.events.append((self._state[1].value.startevent, self._state[0], None))
            if self._state[2] is 0:  # it is an empty nested segment
                self._scstate = ScannerState.SEGMENT_ENDED
            else:
                if self._state[1].value.multiplier is 2:
                    self.parentismap = 1
                    self.waitingforprop = 1
                else:
                    self.parentismap = 0
                    self.waitingforprop = 0
                    
                self.push_state()
                self._scstate = ScannerState.WAITING_FOR_HEADER
        else:
            if self._state[1].value.segmenttype is SegmentType.EXT_FORMAT:
                self._scstate = ScannerState.WAITING_FOR_EXT_TYPE
            else:
                self._scstate = ScannerState.WAITING_FOR_VALUE
                if self._state[2] is 0:  # it is an empty nested segment
                    self.events.append((self.value_event_type(EventType.VALUE), self._state[0], self.empty_value(self._state[0])))
                    self._scstate = self.next_state_afterraw()
                    self._scstate = ScannerState.SEGMENT_ENDED