| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- package sctp
- import (
- "encoding/binary"
- )
- // errorCauseHeader represents the shared header that is shared by all error causes
- type errorCauseHeader struct {
- code errorCauseCode
- len uint16
- raw []byte
- }
- const (
- errorCauseHeaderLength = 4
- )
- func (e *errorCauseHeader) marshal() ([]byte, error) {
- e.len = uint16(len(e.raw)) + uint16(errorCauseHeaderLength)
- raw := make([]byte, e.len)
- binary.BigEndian.PutUint16(raw[0:], uint16(e.code))
- binary.BigEndian.PutUint16(raw[2:], e.len)
- copy(raw[errorCauseHeaderLength:], e.raw)
- return raw, nil
- }
- func (e *errorCauseHeader) unmarshal(raw []byte) error {
- e.code = errorCauseCode(binary.BigEndian.Uint16(raw[0:]))
- e.len = binary.BigEndian.Uint16(raw[2:])
- valueLength := e.len - errorCauseHeaderLength
- e.raw = raw[errorCauseHeaderLength : errorCauseHeaderLength+valueLength]
- return nil
- }
- func (e *errorCauseHeader) length() uint16 {
- return e.len
- }
- func (e *errorCauseHeader) errorCauseCode() errorCauseCode {
- return e.code
- }
- // String makes errorCauseHeader printable
- func (e errorCauseHeader) String() string {
- return e.code.String()
- }
|