go-peer/pkg/payload/payload32.go
2024-05-02 16:21:57 +07:00

43 lines
769 B
Go

package payload
import (
"bytes"
"github.com/number571/go-peer/pkg/encoding"
)
var (
_ IPayload32 = sPayload32{}
)
type sPayload32 []byte
func NewPayload32(pHead uint32, pData []byte) IPayload32 {
bHead := encoding.Uint32ToBytes(pHead)
return sPayload32(bytes.Join([][]byte{
bHead[:],
pData,
}, []byte{}))
}
func LoadPayload32(pPayloadBytes []byte) IPayload32 {
if len(pPayloadBytes) < encoding.CSizeUint32 {
return nil
}
return sPayload32(pPayloadBytes)
}
func (p sPayload32) GetHead() uint32 {
bHead := [encoding.CSizeUint32]byte{}
copy(bHead[:], p[:encoding.CSizeUint32])
return encoding.BytesToUint32(bHead)
}
func (p sPayload32) GetBody() []byte {
return p[encoding.CSizeUint32:]
}
func (p sPayload32) ToBytes() []byte {
return p[:]
}