MCPcopy
hub / github.com/wavetermdev/waveterm / sendRoutedMessage

Method sendRoutedMessage

pkg/wshutil/wshrouter.go:281–305  ·  view source on GitHub ↗

returns true if message was sent, false if failed

(msgBytes []byte, routeId string, commandName string, ingressLinkId baseds.LinkId)

Source from the content-addressed store, hash-verified

279
280// returns true if message was sent, false if failed
281func (router *WshRouter) sendRoutedMessage(msgBytes []byte, routeId string, commandName string, ingressLinkId baseds.LinkId) bool {
282 if strings.HasPrefix(routeId, RoutePrefix_Link) {
283 linkIdStr := strings.TrimPrefix(routeId, RoutePrefix_Link)
284 linkIdInt, err := strconv.ParseInt(linkIdStr, 10, 32)
285 if err == nil {
286 return router.sendMessageToLink(msgBytes, baseds.LinkId(linkIdInt), ingressLinkId)
287 }
288 }
289 lm := router.getLinkForRoute(routeId)
290 if lm != nil {
291 router.sendRpcMessageToLink(lm.linkId, lm.client, msgBytes, ingressLinkId, "route")
292 return true
293 }
294 upstreamLinkId, upstream := router.getUpstreamClient()
295 if upstream != nil {
296 router.sendRpcMessageToLink(upstreamLinkId, upstream, msgBytes, ingressLinkId, "route-upstream")
297 return true
298 }
299 if commandName != "" {
300 log.Printf("[router] no rpc for route id %q command:%s\n", routeId, commandName)
301 } else {
302 log.Printf("[router] no rpc for route id %q\n", routeId)
303 }
304 return false
305}
306
307func (router *WshRouter) sendMessageToLink(msgBytes []byte, linkId baseds.LinkId, ingressLinkId baseds.LinkId) bool {
308 lm := router.getLinkMeta(linkId)

Callers 2

handleNoRouteMethod · 0.95
runServerMethod · 0.95

Calls 5

sendMessageToLinkMethod · 0.95
getLinkForRouteMethod · 0.95
sendRpcMessageToLinkMethod · 0.95
getUpstreamClientMethod · 0.95
LinkIdTypeAlias · 0.92

Tested by

no test coverage detected