in util.go [23:50]
func WriteRecords(w io.Writer, generated ...jute.RecordWriter) error {
sendBuf := &bytes.Buffer{}
enc := jute.NewBinaryEncoder(sendBuf)
for _, generatedStruct := range generated {
if err := generatedStruct.Write(enc); err != nil {
return fmt.Errorf("could not encode struct: %w", err)
}
}
// copy encoded request bytes
requestBytes := append([]byte(nil), sendBuf.Bytes()...)
// use encoder to prepend request length to the request bytes
sendBuf.Reset()
if err := enc.WriteBuffer(requestBytes); err != nil {
return fmt.Errorf("could not write buffer: %w", err)
}
if err := enc.WriteEnd(); err != nil {
return fmt.Errorf("could not write buffer: %w", err)
}
if _, err := w.Write(sendBuf.Bytes()); err != nil {
return fmt.Errorf("error writing to io.Writer: %w", err)
}
return nil
}