generator fix - add new message type 29/8529/1
authorRastislav Szabo <raszabo@cisco.com>
Mon, 25 Sep 2017 19:58:24 +0000 (21:58 +0200)
committerRastislav Szabo <raszabo@cisco.com>
Mon, 25 Sep 2017 19:58:24 +0000 (21:58 +0200)
Change-Id: I5e2b312e086d18eb7fa3f349750caea20005f530
Signed-off-by: Rastislav Szabo <raszabo@cisco.com>
api/api.go
cmd/binapi-generator/generator.go
core/bin_api/vpe/vpe.go
core/msg_codec.go

index afaa8ad..c247417 100644 (file)
@@ -28,6 +28,8 @@ const (
        RequestMessage MessageType = iota
        // ReplyMessage represents a VPP reply message
        ReplyMessage
+       // EventMessage represents a VPP notification event message
+       EventMessage
        // OtherMessage represents other VPP message (e.g. counters)
        OtherMessage
 )
index e3efe0f..d8420f9 100644 (file)
@@ -38,6 +38,7 @@ type messageType int
 const (
        requestMessage messageType = iota // VPP request message
        replyMessage                      // VPP reply message
+       eventMessage                      // VPP event message
        otherMessage                      // other VPP message
 )
 
@@ -260,6 +261,8 @@ func generateMessage(ctx *context, w io.Writer, msg *jsongo.JSONNode, isType boo
                                if ok {
                                        if j == 2 {
                                                if fieldName == "client_index" {
+                                                       // "client_index" as the second member, this might be an event message or a request
+                                                       msgType = eventMessage
                                                        wasClientIndex = true
                                                } else if fieldName == "context" {
                                                        // reply needs "context" as the second member
@@ -465,6 +468,8 @@ func generateMessageTypeGetter(w io.Writer, structName string, msgType messageTy
                fmt.Fprintln(w, "\treturn api.RequestMessage")
        } else if msgType == replyMessage {
                fmt.Fprintln(w, "\treturn api.ReplyMessage")
+       } else if msgType == eventMessage {
+               fmt.Fprintln(w, "\treturn api.EventMessage")
        } else {
                fmt.Fprintln(w, "\treturn api.OtherMessage")
        }
index 51a245b..c11f466 100644 (file)
@@ -1,5 +1,6 @@
+// Code generated by govpp binapi-generator DO NOT EDIT.
 // Package vpe represents the VPP binary API of the 'vpe' VPP module.
-// DO NOT EDIT. Generated from 'bin_api/vpe.api.json'
+// Generated from 'bin_api/vpe.api.json'
 package vpe
 
 import "git.fd.io/govpp.git/api"
index 5614a7e..c72b7f3 100644 (file)
@@ -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:])
        }