Skip to content

Commit 3975935

Browse files
committed
more error handling
1 parent 01306b3 commit 3975935

File tree

1 file changed

+36
-10
lines changed

1 file changed

+36
-10
lines changed

messages.go

Lines changed: 36 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -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.
105122
func (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

Comments
 (0)