Crate melnet[−][src]
Expand description
Melnet serves as Themelio’s peer-to-peer network layer, based on a randomized topology and gossip. Peers are divided into servers, which have a publicly reachable address, and clients, which do not. It’s based on a simple stdcode request-response protocol, where the only way to “push” a message is to send a request to a server. There is no multiplexing — the whole thing works like HTTP/1.1. TCP connections are pretty cheap these days.
This also means that clients never receive notifications, and must poll servers.
The general way to use melnet
is as follows:
- Create a
NetState
. This holds the routing table, RPC verb handlers, and other “global” data. - If running as a server, register RPC verbs with
NetState::register_verb
and runNetState::run_server
in the background. - Use a
Client
, like the global one returned byg_client()
, to make RPC calls to other servers. Servers are simply identified by astd::net::SocketAddr
.
Structs
NetState | A clonable structure representing a melnet state. All copies share the same routing table. |
Request | A |
ResponseChan | A single-use channel through which to send a response. |
Enums
MelnetError |
Constants
MAX_MSG_SIZE | |
PROTO_VER |
Traits
Endpoint | An Endpoint responds to Requests. Requests are responded to by calling |
Functions
read_len_bts | |
request | Does a melnet request to any given endpoint, using the global client. |
write_len_bts |
Type Definitions
BoxFuture | |
Result |