mirror of
https://github.com/number571/go-peer.git
synced 2026-09-13 18:45:44 +05:00
43 lines
769 B
Go
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[:]
|
|
}
|