package putsvc

import (
	"sync"
)

const (
	defaultAllocSize = 1024
	poolSliceMaxSize = 128 * 1024
)

type payload struct {
	Data []byte
}

var putBytesPool = &sync.Pool{
	New: func() any { return &payload{Data: make([]byte, 0, defaultAllocSize)} },
}

func getPayload() *payload {
	return putBytesPool.Get().(*payload)
}

func putPayload(p *payload) {
	if cap(p.Data) > poolSliceMaxSize {
		return
	}
	p.Data = p.Data[:0]
	putBytesPool.Put(p)
}