package prompbmarshal import ( "fmt" ) // MarshalWriteRequest marshals wr to dst and returns the result. func MarshalWriteRequest(dst []byte, wr *WriteRequest) []byte { size := wr.Size() dstLen := len(dst) if n := size - (cap(dst) - dstLen); n > 0 { dst = append(dst[:cap(dst)], make([]byte, n)...) } dst = dst[:dstLen+size] n, err := wr.MarshalToSizedBuffer(dst[dstLen:]) if err != nil { panic(fmt.Errorf("BUG: unexpected error when marshaling WriteRequest: %w", err)) } return dst[:dstLen+n] } // ResetWriteRequest resets wr. func ResetWriteRequest(wr *WriteRequest) { wr.Timeseries = ResetTimeSeries(wr.Timeseries) } // ResetTimeSeries clears all the GC references from tss and returns an empty tss ready for further use. func ResetTimeSeries(tss []TimeSeries) []TimeSeries { for i := range tss { ts := tss[i] ts.Labels = nil ts.Samples = nil } return tss[:0] }