/*
getAtLeastMessages keeps calling clog.GetMessages until the count of messages has been retrieved.

Callers must be certain that index + count < lastIndex
*/
func (clog *CommitLog) getAtLeastMessages(index, count int64) (model.Messages, error) {
	var readMessageCount int64
	indexToRead := index
	var results model.Messages
	var err error
	for readMessageCount < count && err == nil {
		var msgs model.Messages
		msgs, err = clog.log.GetMessages(indexToRead, count-readMessageCount)
		if err != nil {
			return model.EMPTY_MESSAGES, err
		}
		if msgs.GetCount() > 0 {
			readMessageCount += int64(msgs.GetCount())
			indexToRead += int64(msgs.GetCount())
			results, err = results.Join(msgs)
			if err != nil {
				return model.EMPTY_MESSAGES, err
			}
		}
	}
	return results, err
}