MCPcopy Create free account
hub / github.com/chainreactors/EvilProxy / dispatch

Method dispatch

internal/wsrelay/session.go:101–122  ·  view source on GitHub ↗
(msg Message)

Source from the content-addressed store, hash-verified

99}
100
101func (s *session) dispatch(msg Message) {
102 if msg.Type == MessageTypePing {
103 _ = s.send(context.Background(), Message{ID: msg.ID, Type: MessageTypePong})
104 return
105 }
106 if value, ok := s.pending.Load(msg.ID); ok {
107 req := value.(*pendingRequest)
108 select {
109 case req.ch <- msg:
110 default:
111 }
112 if msg.Type == MessageTypeHTTPResp || msg.Type == MessageTypeError || msg.Type == MessageTypeStreamEnd {
113 if actual, loaded := s.pending.LoadAndDelete(msg.ID); loaded {
114 actual.(*pendingRequest).close()
115 }
116 }
117 return
118 }
119 if msg.Type == MessageTypeHTTPResp || msg.Type == MessageTypeError || msg.Type == MessageTypeStreamEnd {
120 s.manager.logDebugf("wsrelay: received terminal message for unknown id %s (provider=%s)", msg.ID, s.provider)
121 }
122}
123
124func (s *session) send(ctx context.Context, msg Message) error {
125 select {

Callers 1

runMethod · 0.95

Calls 3

sendMethod · 0.95
LoadMethod · 0.65
closeMethod · 0.45

Tested by

no test coverage detected