You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This crate implements the iroh-gossip protocol.
It is based on epidemic broadcast trees to disseminate messages among a swarm of peers interested in a topic.
The implementation is based on the papers HyParView and PlumTree.
The crate is made up from two modules:
The proto module is the protocol implementation, as a state machine without any IO.
The net module implements networking logic for running iroh-gossip on iroh connections.
The net module is optional behind the net feature flag (enabled by default).
Getting Started
The iroh-gossip protocol was designed to be used in conjunction with iroh. Iroh is a networking library for making direct connections, these connections are how gossip messages are sent.
Iroh provides a Router that takes an Endpoint and any protocols needed for the application. Similar to a router in webserver library, it runs a loop accepting incoming connections and routes them to the specific protocol handler, based on ALPN.
Here is a basic example of how to set up iroh-gossip with iroh:
use iroh::{protocol::Router,Endpoint};use iroh_gossip::{net::Gossip,ALPN};use n0_snafu::ResultExt;#[tokio::main]asyncfnmain() -> n0_snafu::Result<()>{// create an iroh endpoint that includes the standard discovery mechanisms// we've built at number0let endpoint = Endpoint::builder().discovery_n0().bind().await?;// build gossip protocollet gossip = Gossip::builder().spawn(endpoint.clone());// setup routerlet router = Router::builder(endpoint.clone()).accept(ALPN, gossip.clone()).spawn();// do fun stuff with the gossip protocol
router.shutdown().await.e()?;Ok(())}
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in this project by you, as defined in the Apache-2.0 license,
shall be dual licensed as above, without any additional terms or conditions.