@@ -5,9 +5,11 @@ import (
55 "crypto/sha256"
66 "encoding/hex"
77 "encoding/json"
8+ "log"
89
910 zmq "github.com/alecthomas/gozmq"
1011 uuid "github.com/nu7hatch/gouuid"
12+ "github.com/pkg/errors"
1113)
1214
1315// MsgHeader encodes header info for ZMQ messages
@@ -44,7 +46,6 @@ func WireMsgToComposedMsg(msgparts [][]byte, signkey []byte) (msg ComposedMsg,
4446 i ++
4547 }
4648 identities = msgparts [:i ]
47- // msgparts[i] is the delimiter
4849
4950 // Validate signature
5051 if len (signkey ) != 0 {
@@ -67,18 +68,34 @@ func WireMsgToComposedMsg(msgparts [][]byte, signkey []byte) (msg ComposedMsg,
6768
6869// ToWireMsg translates a ComposedMsg into a multipart ZMQ message ready to send, and
6970// signs it. This does not add the return identities or the delimiter.
70- func (msg ComposedMsg ) ToWireMsg (signkey []byte ) (msgparts [][]byte ) {
71- msgparts = make ([][]byte , 5 )
72- header , _ := json .Marshal (msg .Header )
71+ func (msg ComposedMsg ) ToWireMsg (signkey []byte ) ([][]byte , error ) {
72+
73+ msgparts := make ([][]byte , 5 )
74+ header , err := json .Marshal (msg .Header )
75+ if err != nil {
76+ return msgparts , errors .Wrap (err , "Could not marshal message header" )
77+ }
7378 msgparts [1 ] = header
74- parentHeader , _ := json .Marshal (msg .ParentHeader )
79+
80+ parentHeader , err := json .Marshal (msg .ParentHeader )
81+ if err != nil {
82+ return msgparts , errors .Wrap (err , "Could not marshal parent header" )
83+ }
7584 msgparts [2 ] = parentHeader
85+
7686 if msg .Metadata == nil {
7787 msg .Metadata = make (map [string ]interface {})
7888 }
79- metadata , _ := json .Marshal (msg .Metadata )
89+ metadata , err := json .Marshal (msg .Metadata )
90+ if err != nil {
91+ return msgparts , errors .Wrap (err , "Could not marshal metadata" )
92+ }
8093 msgparts [3 ] = metadata
81- content , _ := json .Marshal (msg .Content )
94+
95+ content , err := json .Marshal (msg .Content )
96+ if err != nil {
97+ return msgparts , errors .Wrap (err , "Could not marshal content" )
98+ }
8299 msgparts [4 ] = content
83100
84101 // Sign the message
@@ -90,7 +107,7 @@ func (msg ComposedMsg) ToWireMsg(signkey []byte) (msgparts [][]byte) {
90107 msgparts [0 ] = make ([]byte , hex .EncodedLen (mac .Size ()))
91108 hex .Encode (msgparts [0 ], mac .Sum (nil ))
92109 }
93- return
110+ return msgparts , nil
94111}
95112
96113// MsgReceipt represents a received message, its return identities, and the sockets for
@@ -103,9 +120,15 @@ type MsgReceipt struct {
103120
104121// SendResponse sends a message back to return identites of the received message.
105122func (receipt * MsgReceipt ) SendResponse (socket * zmq.Socket , msg ComposedMsg ) {
123+
106124 socket .SendMultipart (receipt .Identities , zmq .SNDMORE )
107125 socket .Send ([]byte ("<IDS|MSG>" ), zmq .SNDMORE )
108- socket .SendMultipart (msg .ToWireMsg (receipt .Sockets .Key ), 0 )
126+
127+ msgParts , err := msg .ToWireMsg (receipt .Sockets .Key )
128+ if err != nil {
129+ log .Fatalln (err )
130+ }
131+ socket .SendMultipart (msgParts , 0 )
109132 logger .Println ("<--" , msg .Header .MsgType )
110133 logger .Printf ("%+v\n " , msg .Content )
111134}
@@ -117,7 +140,10 @@ func NewMsg(msgType string, parent ComposedMsg) (msg ComposedMsg) {
117140 msg .Header .Session = parent .Header .Session
118141 msg .Header .Username = parent .Header .Username
119142 msg .Header .MsgType = msgType
120- u , _ := uuid .NewV4 ()
143+ u , err := uuid .NewV4 ()
144+ if err != nil {
145+ log .Fatalln (errors .Wrap (err , "Could not generate UUID" ))
146+ }
121147 msg .Header .MsgID = u .String ()
122148 return
123149}
0 commit comments