Juvix imports
module arch.node.net.router_messages;
import arch.node.net.router_types open;
import arch.node.net.transport_types open;
import arch.node.net.node_proxy_messages open;
import arch.node.net.pub_sub_topic_messages open;
import arch.node.types.basics open;
import arch.node.types.identities open;
import arch.node.types.messages open;
Router Messages¶
Message interface¶
RouterMsgNodeSend¶
Send a message to a Node Proxy. If it does not exist yet, the Router spawns a new instance beforehand.
type NodeOutMsg M :=
mkNodeOutMsg@{
prefs : TransportPrefs;
expiry : Time;
msg : EngineMsg M;
};
RouterMsgTopicForward¶
Forward a TopicMsg to the corresponding Pub/Sub Topic.
If the topic does not exist, the message is dropped.
This happens when there are no subscribers.
RouterMsgNodeConnectRequest¶
Request to establish a connection to a remote node.
The Router spawns a new Node Proxy if it does not exist yet,
and sets the connection permanence of the Node Proxy
via MsgNodeProxySetPermanence.
type NodeConnectRequest :=
mkNodeConnectRequest@{
node_id : NodeID;
permanent : Bool;
};
Arguments
node_id- Node ID to connect to.
permanent- Whether or not the connection should be permanent.
NodeConnectReply¶
Reply to a NodeConnectRequest.
NodeConnectReplyOk¶
Example OK reply.
type NodeConnectReplyOk : Type :=
mkExampleReplyOk@{
argOne : Nat;
};
Arguments
argOne- Lorem ipsum dolor sit amet, consectetur adipiscing elit.
NodeConnectReplyError¶
Example error reply.
type NodeConnectReplyError : Type :=
| NodeConnectReplyErrorUnknown
| NodeConnectReplyErrorDenied;
Error types
NodeConnectReplyErrorUnknown- No
NodeAdvertknown for node. NodeConnectReplyErrorDenied- Connection to node denied by local policy.
NodeConnectReply¶
NodeConnectReply : Type := Result NodeConnectReplyError NodeConnectReplyOk;
RouterMsgTopicSub TopicSub¶
Allow local engines to subscribe to a Pub/Sub Topic
if a TopicAdvert is known for the topic.
The Router forwards the TopicSub message to the Pub/Sub Topic
engine instance responsible for the topic.
If necessary, it spawns a new Pub/Sub Topic engine instance beforehand.
type RouterSub :=
mkRouterSub@{
topic_id : TopicID;
};
topic_id- Topic ID.
RouterMsgTopicUnsub TopicUnsub¶
Allow local engines to unsubscribe from a Pub/Sub Topic if the topic exists.
The Router forwards the TopicUnsub message to the Pub/Sub Topic.
type RouterTopicUnsub :=
mkRouterTopicsub@{
topic_id : TopicID;
};
topic_id- Topic ID.
RouterMsgNodeAdvert NodeAdvert¶
Node advertisement update.
RouterMsgTopicAdvert TopicAdvert¶
Topic advertisement update.
RouterMsg¶
All Router engine messages.
type RouterMsg M :=
| RouterMsgNodeSend (NodeOutMsg M)
| RouterMsgTopicForward TopicMsg
| RouterMsgNodeConnectRequest NodeConnectRequest
| RouterMsgNodeAdvert NodeAdvert
| RouterMsgTopicAdvert TopicAdvert;