aboutsummaryrefslogtreecommitdiffstats
path: root/core/msg_codec.go
diff options
context:
space:
mode:
Diffstat (limited to 'core/msg_codec.go')
-rw-r--r--core/msg_codec.go13
1 files changed, 13 insertions, 0 deletions
diff --git a/core/msg_codec.go b/core/msg_codec.go
index 5614a7e..c72b7f3 100644
--- a/core/msg_codec.go
+++ b/core/msg_codec.go
@@ -43,6 +43,12 @@ type vppReplyHeader struct {
Context uint32
}
+// vppEventHeader struct contains header fields implemented by all VPP events.
+type vppEventHeader struct {
+ VlMsgID uint16
+ Context uint32
+}
+
// vppOtherHeader struct contains header fields implemented by other VPP messages (not requests nor replies).
type vppOtherHeader struct {
VlMsgID uint16
@@ -51,6 +57,7 @@ type vppOtherHeader struct {
const (
vppRequestHeaderSize = 10 // size of a VPP request header
vppReplyHeaderSize = 6 // size of a VPP reply header
+ vppEventHeaderSize = 6 // size of a VPP event header
vppOtherHeaderSize = 2 // size of the header of other VPP messages
)
@@ -68,6 +75,8 @@ func (*MsgCodec) EncodeMsg(msg api.Message, msgID uint16) ([]byte, error) {
header = &vppRequestHeader{VlMsgID: msgID}
} else if msg.GetMessageType() == api.ReplyMessage {
header = &vppReplyHeader{VlMsgID: msgID}
+ } else if msg.GetMessageType() == api.EventMessage {
+ header = &vppEventHeader{VlMsgID: msgID}
} else {
header = &vppOtherHeader{VlMsgID: msgID}
}
@@ -109,6 +118,8 @@ func (*MsgCodec) DecodeMsg(data []byte, msg api.Message) error {
header = &vppRequestHeader{}
} else if msg.GetMessageType() == api.ReplyMessage {
header = &vppReplyHeader{}
+ } else if msg.GetMessageType() == api.EventMessage {
+ header = &vppEventHeader{}
} else {
header = &vppOtherHeader{}
}
@@ -128,6 +139,8 @@ func (*MsgCodec) DecodeMsg(data []byte, msg api.Message) error {
buf = bytes.NewReader(data[vppRequestHeaderSize:])
} else if msg.GetMessageType() == api.ReplyMessage {
buf = bytes.NewReader(data[vppReplyHeaderSize:])
+ } else if msg.GetMessageType() == api.EventMessage {
+ buf = bytes.NewReader(data[vppEventHeaderSize:])
} else {
buf = bytes.NewReader(data[vppOtherHeaderSize:])
}