- var header interface{}
-
- // encode message header
- switch msg.GetMessageType() {
- case api.RequestMessage:
- header = &VppRequestHeader{VlMsgID: msgID}
-
- case api.ReplyMessage:
- header = &VppReplyHeader{VlMsgID: msgID}
-
- case api.EventMessage:
- header = &VppEventHeader{VlMsgID: msgID}
+ // try to recover panic which might possibly occur
+ defer func() {
+ if r := recover(); r != nil {
+ var ok bool
+ if err, ok = r.(error); !ok {
+ err = fmt.Errorf("%v", r)
+ }
+ err = fmt.Errorf("panic occurred during encoding message %s: %v", msg.GetMessageName(), err)
+ }
+ }()