status-go/vendor/github.com/pion/sctp/param.go

41 lines
1.0 KiB
Go

package sctp
import (
"errors"
"fmt"
)
type param interface {
marshal() ([]byte, error)
length() int
}
var errParamTypeUnhandled = errors.New("unhandled ParamType")
func buildParam(t paramType, rawParam []byte) (param, error) {
switch t {
case forwardTSNSupp:
return (&paramForwardTSNSupported{}).unmarshal(rawParam)
case supportedExt:
return (&paramSupportedExtensions{}).unmarshal(rawParam)
case ecnCapable:
return (&paramECNCapable{}).unmarshal(rawParam)
case random:
return (&paramRandom{}).unmarshal(rawParam)
case reqHMACAlgo:
return (&paramRequestedHMACAlgorithm{}).unmarshal(rawParam)
case chunkList:
return (&paramChunkList{}).unmarshal(rawParam)
case stateCookie:
return (&paramStateCookie{}).unmarshal(rawParam)
case heartbeatInfo:
return (&paramHeartbeatInfo{}).unmarshal(rawParam)
case outSSNResetReq:
return (&paramOutgoingResetRequest{}).unmarshal(rawParam)
case reconfigResp:
return (&paramReconfigResponse{}).unmarshal(rawParam)
default:
return nil, fmt.Errorf("%w: %v", errParamTypeUnhandled, t)
}
}