module arch.node.net.node_proxy_messages; import arch.node.net.router_types open; import arch.node.net.transport_types open; import arch.node.types.basics open; import arch.node.types.identities open; import arch.node.types.messages open; type NodeOutMsg M := mkNodeOutMsg@{ prefs : TransportPrefs; expiry : Time; msg : EngineMsg M; }; type NodeMsg := mkNodeMsg@{ seq : Nat; msg : EncryptedMsg; }; type ConnectRequest := mkConnectRequest@{ proto_ver_min : Nat; proto_ver_max : Nat; src_node_id : NodeID; dst_node_id : NodeID; src_node_advert_ver : Nat; dst_node_advert_ver : Nat; }; type ConnectReplyOk := mkConnectReplyOk@{ proto_ver : Nat; node_advert_ver : Pair Nat Nat; }; type ConnectReplyError := | ConnectReplyErrorOverCapacity | ConnectReplyErrorIncompatible | ConnectReplyErrorDenied; ConnectReply : Type := Result ConnectReplyOk ConnectReplyError; type ConnectionPermanence := | NodeProxyMsgConnectionEphemeral | NodeProxyMsgConnectionPermanent; type NodeProxyMsg M := | NodeProxyMsgSend (NodeOutMsg M) | NodeProxyMsgRecv NodeMsg | NodeProxyMsgConnectRequest ConnectRequest | NodeProxyMsgConnectReply ConnectReply | NodeProxyMsgNodeAdvert NodeAdvert | NodeProxyMsgSetPermanence ConnectionPermanence;