package codec
import (
+ "encoding/binary"
"errors"
"fmt"
var DefaultCodec = new(MsgCodec)
-// VppRequestHeader struct contains header fields implemented by all VPP requests.
-type VppRequestHeader struct {
- VlMsgID uint16
- ClientIndex uint32
- Context uint32
+func EncodeMsg(msg api.Message, msgID uint16) (data []byte, err error) {
+ return DefaultCodec.EncodeMsg(msg, msgID)
}
-
-// VppReplyHeader struct contains header fields implemented by all VPP replies.
-type VppReplyHeader struct {
- VlMsgID uint16
- Context uint32
-}
-
-// VppEventHeader struct contains header fields implemented by all VPP events.
-type VppEventHeader struct {
- VlMsgID uint16
- ClientIndex uint32
+func DecodeMsg(data []byte, msg api.Message) (err error) {
+ return DefaultCodec.DecodeMsg(data, msg)
}
-
-// VppOtherHeader struct contains header fields implemented by other VPP messages (not requests nor replies).
-type VppOtherHeader struct {
- VlMsgID uint16
+func DecodeMsgContext(data []byte, msgType api.MessageType) (context uint32, err error) {
+ return DefaultCodec.DecodeMsgContext(data, msgType)
}
// MsgCodec provides encoding and decoding functionality of `api.Message` structs into/from
return nil
}
-func (*MsgCodec) DecodeMsgContext(data []byte, msg api.Message) (context uint32, err error) {
- if msg == nil {
- return 0, errors.New("nil message passed in")
- }
-
- switch msg.GetMessageType() {
+func (*MsgCodec) DecodeMsgContext(data []byte, msgType api.MessageType) (context uint32, err error) {
+ switch msgType {
case api.RequestMessage:
- return order.Uint32(data[6:10]), nil
+ return binary.BigEndian.Uint32(data[6:10]), nil
case api.ReplyMessage:
- return order.Uint32(data[2:6]), nil
+ return binary.BigEndian.Uint32(data[2:6]), nil
}
return 0, nil