Files
webrtc/internal/sctp/param_header.go
2018-07-21 12:27:38 -07:00

34 lines
795 B
Go

package sctp
import "encoding/binary"
type ParamHeader struct {
typ ParamType
length int
raw []byte
}
func (p *ParamHeader) Marshal() ([]byte, error) {
paramLengthPlusHeader := 4 + len(p.raw)
rawParam := make([]byte, paramLengthPlusHeader)
binary.BigEndian.PutUint16(rawParam[0:], uint16(p.typ))
binary.BigEndian.PutUint16(rawParam[2:], uint16(paramLengthPlusHeader))
copy(rawParam[4:], p.raw)
return rawParam, nil
}
func (p *ParamHeader) Unmarshal(raw []byte) {
paramLengthPlusHeader := binary.BigEndian.Uint16(raw[2:])
paramLength := paramLengthPlusHeader - initOptionalVarHeaderLength
p.typ = ParamType(binary.BigEndian.Uint16(raw[0:]))
p.raw = raw[4 : 4+paramLength]
p.length = int(paramLengthPlusHeader)
}
func (p *ParamHeader) Length() int {
return p.length
}