Not necessary before Friday – An overview like this would be very helpful for us in understanding the message router.
Given two services L1 and L2 and message router ML on the same node, and service R and message router MR on a remote node.
-
Case: L1 wants to talk to L2
How: L1 sends a unicast message M to ML withdst=L2, body=CBOR(... application payload ... ). ML sees thatsrcanddstare local and passes it on.
Example: … -
Case: L1 wants to talk to ML.
How: L1 sends a unicast message M to ML withdst=ML. Finished.
Example: tell ML to join a particular group. Then M will havebody=CBOR([1, CBOR({addr: pubkey, local: bool})]) -
Case: L1 wants to talk to R. (Current spec.)
How: L1 looks up the message router MR for R. L1 wraps unicast message M withdst=Rin unicast message N withdst=MR, body=CBOR([0, CBOR(M)])and sends it to ML. ML unwraps it, sees thatsrcof M is local anddstis remote and sends M to MR. MR sees thatsrcof M is remote anddstis local and passes it to R. Finished.
Example: … -
Case: L1 wants to talk to R. (Proposed.)
How: L1 sends a unicast message M to ML withdst=R. ML sees thatsrcis local anddstis remote, looks up the message router MR for R, and sends M to MR. MR sees thatsrcis remote anddstis local and passes it to R.
Example: …
(Please check
)
- More cases, also multicast …