MCPcopy
hub / github.com/OpenNHP/opennhp / PacketToMsg

Method PacketToMsg

nhp/core/device.go:431–467  ·  view source on GitHub ↗

Synchronous linear processing.

(pd *PacketData)

Source from the content-addressed store, hash-verified

429
430// Synchronous linear processing.
431func (d *Device) PacketToMsg(pd *PacketData) (ppd *PacketParserData, err error) {
432 defer func() {
433 if x := recover(); x != nil {
434 ppd = nil
435 err = fmt.Errorf("!!!recovered from panic: %v\n%s", x, string(debug.Stack()))
436 ErrRuntimePanic.SetExtraError(err)
437 err = ErrRuntimePanic
438 }
439 }()
440
441 var packetType int
442 packetType, _, err = d.RecvPrecheck(pd.BasePacket)
443 if err != nil {
444 return nil, err
445 }
446 // skip processing keepalive packet
447 if packetType == NHP_KPL {
448 return &PacketParserData{HeaderType: NHP_KPL}, nil
449 }
450
451 pd.InitTime = time.Now().UnixNano()
452 ppd, err = d.createPacketParserData(pd)
453 defer ppd.Destroy()
454 if err != nil {
455 return nil, err
456 }
457 err = ppd.validatePeer()
458 if err != nil {
459 return nil, err
460 }
461 err = ppd.decryptBody()
462 if err != nil {
463 return nil, err
464 }
465
466 return ppd, nil
467}
468
469func (d *Device) SendMsgToPacket(md *MsgData) {
470 select {

Callers 1

Calls 6

RecvPrecheckMethod · 0.95
SetExtraErrorMethod · 0.80
validatePeerMethod · 0.65
decryptBodyMethod · 0.65
DestroyMethod · 0.45

Tested by

no test coverage detected