Decode message context using the message type only
[govpp.git] / codec / msg_codec.go
index 68cf3b1..227764d 100644 (file)
@@ -24,6 +24,16 @@ import (
 
 var DefaultCodec = new(MsgCodec)
 
+func EncodeMsg(msg api.Message, msgID uint16) (data []byte, err error) {
+       return DefaultCodec.EncodeMsg(msg, msgID)
+}
+func DecodeMsg(data []byte, msg api.Message) (err error) {
+       return DefaultCodec.DecodeMsg(data, msg)
+}
+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
 // binary format as accepted by VPP.
 type MsgCodec struct{}
@@ -96,12 +106,8 @@ func (*MsgCodec) DecodeMsg(data []byte, msg api.Message) (err error) {
        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 binary.BigEndian.Uint32(data[6:10]), nil
        case api.ReplyMessage: