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

Function ResolveInboundEvent

rpc/proc.go:15–62  ·  view source on GitHub ↗
(inputEvent cellnet.Event)

Source from the content-addressed store, hash-verified

13}
14
15func ResolveInboundEvent(inputEvent cellnet.Event) (ouputEvent cellnet.Event, handled bool, err error) {
16
17 if _, ok := inputEvent.(*RecvMsgEvent); ok {
18 return inputEvent, false, nil
19 }
20
21 rpcMsg, ok := inputEvent.Message().(RemoteCallMsg)
22 if !ok {
23 return inputEvent, false, nil
24 }
25
26 userMsg, _, err := codec.DecodeMessage(int(rpcMsg.GetMsgID()), rpcMsg.GetMsgData())
27
28 if err != nil {
29 return inputEvent, false, err
30 }
31
32 if msglog.IsMsgLogValid(int(rpcMsg.GetMsgID())) {
33 peerInfo := inputEvent.Session().Peer().(cellnet.PeerProperty)
34
35 log.Debugf("#rpc.recv(%s)@%d len: %d %s | %s",
36 peerInfo.Name(),
37 inputEvent.Session().ID(),
38 cellnet.MessageSize(userMsg),
39 cellnet.MessageToName(userMsg),
40 cellnet.MessageToString(userMsg))
41 }
42
43 switch inputEvent.Message().(type) {
44 case *RemoteCallREQ: // 服务端收到客户端的请求
45
46 return &RecvMsgEvent{
47 inputEvent.Session(),
48 userMsg,
49 rpcMsg.GetCallID(),
50 }, true, nil
51
52 case *RemoteCallACK: // 客户端收到服务器的回应
53 request := getRequest(rpcMsg.GetCallID())
54 if request != nil {
55 request.RecvFeedback(userMsg)
56 }
57
58 return inputEvent, true, nil
59 }
60
61 return inputEvent, false, nil
62}
63
64func ResolveOutboundEvent(inputEvent cellnet.Event) (handled bool, err error) {
65 rpcMsg, ok := inputEvent.Message().(RemoteCallMsg)

Callers 1

OnInboundEventMethod · 0.92

Calls 15

DecodeMessageFunction · 0.92
IsMsgLogValidFunction · 0.92
MessageSizeFunction · 0.92
MessageToNameFunction · 0.92
MessageToStringFunction · 0.92
getRequestFunction · 0.85
RecvFeedbackMethod · 0.80
MessageMethod · 0.65
GetMsgIDMethod · 0.65
GetMsgDataMethod · 0.65
PeerMethod · 0.65
SessionMethod · 0.65

Tested by

no test coverage detected