mirror of
https://github.com/postmannen/ctrl.git
synced 2025-03-05 14:56:49 +00:00
added cbor subscriber decoding
This commit is contained in:
parent
574bed573a
commit
3bf5fca5cd
1 changed files with 36 additions and 10 deletions
46
process.go
46
process.go
|
@ -338,16 +338,41 @@ func (p process) messageSubscriberHandler(natsConn *nats.Conn, thisNode string,
|
||||||
|
|
||||||
message := Message{}
|
message := Message{}
|
||||||
|
|
||||||
// Create a buffer to decode the gob encoded binary data back
|
// Is serializatio
|
||||||
// to it's original structure.
|
if val, ok := msg.Header["serial"]; ok {
|
||||||
buf := bytes.NewBuffer(msgData)
|
// fmt.Printf(" * DEBUG: ok = %v, map = %v, len of val = %v\n", ok, msg.Header, len(val))
|
||||||
gobDec := gob.NewDecoder(buf)
|
switch val[0] {
|
||||||
err := gobDec.Decode(&message)
|
case "cbor":
|
||||||
if err != nil {
|
err := cbor.Unmarshal(msgData, &message)
|
||||||
er := fmt.Errorf("error: gob decoding failed: %v", err)
|
if err != nil {
|
||||||
log.Printf("%v\n", er)
|
er := fmt.Errorf("error: cbor decoding failed: %v", err)
|
||||||
sendErrorLogMessage(p.configuration, p.processes.metrics, p.toRingbufferCh, Node(thisNode), er)
|
log.Printf("%v\n", er)
|
||||||
return
|
sendErrorLogMessage(p.configuration, p.processes.metrics, p.toRingbufferCh, Node(thisNode), er)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
default: // Deaults to gob if no match was found.
|
||||||
|
buf := bytes.NewBuffer(msgData)
|
||||||
|
gobDec := gob.NewDecoder(buf)
|
||||||
|
err := gobDec.Decode(&message)
|
||||||
|
if err != nil {
|
||||||
|
er := fmt.Errorf("error: gob decoding failed: %v", err)
|
||||||
|
log.Printf("%v\n", er)
|
||||||
|
sendErrorLogMessage(p.configuration, p.processes.metrics, p.toRingbufferCh, Node(thisNode), er)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
// Default to gob if serialization flag was not specified.
|
||||||
|
buf := bytes.NewBuffer(msgData)
|
||||||
|
gobDec := gob.NewDecoder(buf)
|
||||||
|
err := gobDec.Decode(&message)
|
||||||
|
if err != nil {
|
||||||
|
er := fmt.Errorf("error: gob decoding failed: %v", err)
|
||||||
|
log.Printf("%v\n", er)
|
||||||
|
sendErrorLogMessage(p.configuration, p.processes.metrics, p.toRingbufferCh, Node(thisNode), er)
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send final reply for a relayed message back to the originating node.
|
// Send final reply for a relayed message back to the originating node.
|
||||||
|
@ -402,6 +427,7 @@ func (p process) messageSubscriberHandler(natsConn *nats.Conn, thisNode string,
|
||||||
}
|
}
|
||||||
|
|
||||||
var out []byte
|
var out []byte
|
||||||
|
var err error
|
||||||
|
|
||||||
out, err = mh.handler(p, message, thisNode)
|
out, err = mh.handler(p, message, thisNode)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue