returns true if message was sent, false if failed
(msgBytes []byte, routeId string, commandName string, ingressLinkId baseds.LinkId)
| 279 | |
| 280 | // returns true if message was sent, false if failed |
| 281 | func (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 | |
| 307 | func (router *WshRouter) sendMessageToLink(msgBytes []byte, linkId baseds.LinkId, ingressLinkId baseds.LinkId) bool { |
| 308 | lm := router.getLinkMeta(linkId) |
no test coverage detected