MCPcopy Index your code
hub / github.com/gopherdata/gophernotes / ToWireMsg

Method ToWireMsg

messages.go:97–140  ·  view source on GitHub ↗

ToWireMsg translates a ComposedMsg into a multipart ZMQ message ready to send, and signs it. This does not add the return identities or the delimiter.

(signkey []byte)

Source from the content-addressed store, hash-verified

95// ToWireMsg translates a ComposedMsg into a multipart ZMQ message ready to send, and
96// signs it. This does not add the return identities or the delimiter.
97func (msg ComposedMsg) ToWireMsg(signkey []byte) ([][]byte, error) {
98
99 msgparts := make([][]byte, 5)
100
101 header, err := json.Marshal(msg.Header)
102 if err != nil {
103 return msgparts, err
104 }
105 msgparts[1] = header
106
107 parentHeader, err := json.Marshal(msg.ParentHeader)
108 if err != nil {
109 return msgparts, err
110 }
111 msgparts[2] = parentHeader
112
113 if msg.Metadata == nil {
114 msg.Metadata = make(map[string]interface{})
115 }
116
117 metadata, err := json.Marshal(msg.Metadata)
118 if err != nil {
119 return msgparts, err
120 }
121 msgparts[3] = metadata
122
123 content, err := json.Marshal(msg.Content)
124 if err != nil {
125 return msgparts, err
126 }
127 msgparts[4] = content
128
129 // Sign the message.
130 if len(signkey) != 0 {
131 mac := hmac.New(sha256.New, signkey)
132 for _, msgpart := range msgparts[1:] {
133 mac.Write(msgpart)
134 }
135 msgparts[0] = make([]byte, hex.EncodedLen(mac.Size()))
136 hex.Encode(msgparts[0], mac.Sum(nil))
137 }
138
139 return msgparts, nil
140}
141
142// SendResponse sends a message back to return identities of the received message.
143func (receipt *msgReceipt) SendResponse(socket zmq4.Socket, msg ComposedMsg) error {

Callers 2

SendResponseMethod · 0.80
sendShellRequestMethod · 0.80

Calls 1

WriteMethod · 0.80

Tested by 1

sendShellRequestMethod · 0.64