处理入站的relay消息
(inputEvent cellnet.Event)
| 14 | |
| 15 | // 处理入站的relay消息 |
| 16 | func 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出站消息的日志 |
| 61 | func ResolveOutboundEvent(inputEvent cellnet.Event) (handled bool, err error) { |
no test coverage detected