ref: c8dd7d3b44c93a664dddc0c4619d336c6e13d2a8
dir: /protocol/pktline/append.go/
package pktline
import "fmt"
// AppendData appends one data frame to dst.
//
// Empty payload is encoded as 0004.
func AppendData(dst, payload []byte) ([]byte, error) {
if len(payload) > LargePacketDataMax {
return dst, fmt.Errorf("%w: %d > %d", ErrTooLarge, len(payload), LargePacketDataMax)
}
var hdr [4]byte
err := EncodeLengthHeader(&hdr, len(payload)+4)
if err != nil {
return dst, err
}
dst = append(dst, hdr[:]...)
dst = append(dst, payload...)
return dst, nil
}
// AppendFlushPkt appends control frame 0000 (flush-pkt).
func AppendFlushPkt(dst []byte) []byte {
return append(dst, '0', '0', '0', '0')
}
// AppendDelimPkt appends control frame 0001 (delim-pkt).
func AppendDelimPkt(dst []byte) []byte {
return append(dst, '0', '0', '0', '1')
}
// AppendResponseEndPkt appends control frame 0002 (response-end-pkt).
func AppendResponseEndPkt(dst []byte) []byte {
return append(dst, '0', '0', '0', '2')
}