MCPcopy
hub / github.com/davyxu/cellnet / ResoleveInboundEvent

Function ResoleveInboundEvent

relay/proc.go:16–58  ·  view source on GitHub ↗

处理入站的relay消息

(inputEvent cellnet.Event)

Source from the content-addressed store, hash-verified

14
15// 处理入站的relay消息
16func ResoleveInboundEvent(inputEvent cellnet.Event) (ouputEvent cellnet.Event, handled bool, err error) {
17
18 switch relayMsg := inputEvent.Message().(type) {
19 case *RelayACK:
20
21 ev := &RecvMsgEvent{
22 Ses: inputEvent.Session(),
23 ack: relayMsg,
24 }
25
26 if relayMsg.MsgID != 0 {
27
28 ev.Msg, _, err = codec.DecodeMessage(int(relayMsg.MsgID), relayMsg.Msg)
29 if err != nil {
30 return
31 }
32 }
33
34 if msglog.IsMsgLogValid(int(relayMsg.MsgID)) {
35
36 peerInfo := inputEvent.Session().Peer().(cellnet.PeerProperty)
37
38 log.Debugf("#relay.recv(%s)@%d len: %d %s {%s}| %s",
39 peerInfo.Name(),
40 inputEvent.Session().ID(),
41 cellnet.MessageSize(ev.Message()),
42 cellnet.MessageToName(ev.Message()),
43 cellnet.MessageToString(relayMsg),
44 cellnet.MessageToString(ev.Message()))
45 }
46
47 if bcFunc != nil {
48 // 转到对应线程中调用
49 cellnet.SessionQueuedCall(inputEvent.Session(), func() {
50 bcFunc(ev)
51 })
52 }
53
54 return ev, true, nil
55 }
56
57 return inputEvent, false, nil
58}
59
60// 处理relay.Relay出站消息的日志
61func ResolveOutboundEvent(inputEvent cellnet.Event) (handled bool, err error) {

Callers 1

OnInboundEventMethod · 0.92

Calls 12

MessageMethod · 0.95
DecodeMessageFunction · 0.92
IsMsgLogValidFunction · 0.92
MessageSizeFunction · 0.92
MessageToNameFunction · 0.92
MessageToStringFunction · 0.92
SessionQueuedCallFunction · 0.92
MessageMethod · 0.65
SessionMethod · 0.65
PeerMethod · 0.65
NameMethod · 0.65
IDMethod · 0.65

Tested by

no test coverage detected