func()

in internal/corpus/generator.go [109:162]


func (gc GeneratorCorpus) eventsPayloadFromFields(template []byte, fields Fields, totEvents uint64, timeNow time.Time, randSeed int64, createPayload []byte, f afero.File) error {
	genlib.InitGeneratorTimeNow(timeNow)
	genlib.InitGeneratorRandSeed(randSeed)

	var evgen genlib.Generator
	var err error
	if len(template) == 0 {
		evgen, err = genlib.NewGenerator(gc.config, fields, totEvents)
	} else {
		if gc.templateType == templateTypeCustom {
			evgen, err = genlib.NewGeneratorWithCustomTemplate(template, gc.config, fields, totEvents)
		} else if gc.templateType == templateTypeGoText {
			evgen, err = genlib.NewGeneratorWithTextTemplate(template, gc.config, fields, totEvents)
		} else {
			return ErrNotValidTemplate
		}

	}

	if err != nil {
		return err
	}

	var buf *bytes.Buffer
	if len(template) == 0 {
		buf = bytes.NewBuffer(createPayload)
	} else {
		buf = bytes.NewBufferString("")
	}

	defer func() {
		_ = evgen.Close()
	}()

	for {
		buf.Truncate(len(createPayload))
		err := evgen.Emit(buf)
		if err == nil {
			buf.WriteByte('\n')

			if _, err = f.Write(buf.Bytes()); err != nil {
				return err
			}
		}

		if err == io.EOF {
			return nil
		}

		if err != nil {
			return err
		}
	}
}