pub struct IgcIrohNode { /* private fields */ }Expand description
Runtime handle for an igc-net node.
Holds the iroh endpoint, iroh-blobs filesystem store, gossip handler, and the local flat-file store.
Implementations§
Source§impl IgcIrohNode
impl IgcIrohNode
Sourcepub async fn start(data_dir: impl Into<PathBuf>) -> Result<Self, NodeError>
pub async fn start(data_dir: impl Into<PathBuf>) -> Result<Self, NodeError>
Build and start a node rooted at data_dir.
- Loads or generates the Ed25519 key from
data_dir/node.key. - Opens
FlatFileStoreatdata_dir. - Binds an iroh
Endpoint, startsiroh-blobsandiroh-gossip. - Subscribes to the announce gossip topic so remote peers can join the swarm immediately (HyParView state must exist for this to work).
Sourcepub fn node_id(&self) -> &NodeIdHex
pub fn node_id(&self) -> &NodeIdHex
The node’s stable network identity (hex-encoded Ed25519 public key).
Sourcepub fn iroh_node_id(&self) -> PublicKey
pub fn iroh_node_id(&self) -> PublicKey
The node’s iroh PublicKey (EndpointId) — use this for gossip bootstrap
when dialling the node directly via iroh.
Sourcepub fn endpoint_addr(&self) -> EndpointAddr
pub fn endpoint_addr(&self) -> EndpointAddr
The node’s current EndpointAddr as reported by the iroh endpoint.
Right after start() this typically contains wildcard bind addresses
(0.0.0.0:PORT) which are not dialable by remote peers. For loopback
integration tests use [loopback_endpoint_addr] instead.
Sourcepub fn loopback_endpoint_addr(&self) -> Result<EndpointAddr, NodeError>
pub fn loopback_endpoint_addr(&self) -> Result<EndpointAddr, NodeError>
Build an EndpointAddr with a proper 127.0.0.1:PORT direct address.
Uses the actual bound UDP port from the endpoint and replaces the
wildcard 0.0.0.0 bind address with the loopback interface. Pass
the result to a peer’s [add_peer_addr] in integration tests so that
gossip-bootstrap can dial over loopback without relay infrastructure.
Sourcepub fn loopback_addr_str(&self) -> Result<String, NodeError>
pub fn loopback_addr_str(&self) -> Result<String, NodeError>
Return the node’s loopback endpoint as a "node_id@127.0.0.1:port" string.
Use this to populate a remote peer’s address book (via [add_peer_addr])
for direct loopback connections in tests and private networks that don’t
rely on relay-based discovery.
Sourcepub fn add_peer_addr(&self, addr: EndpointAddr)
pub fn add_peer_addr(&self, addr: EndpointAddr)
Pre-populate this node’s address book with a peer’s EndpointAddr.
After calling this, the node can dial the peer by its EndpointId
alone (e.g., as a gossip bootstrap peer) using the known direct address
instead of relay-based discovery.
Sourcepub fn store(&self) -> &FlatFileStore
pub fn store(&self) -> &FlatFileStore
Access the local flat-file store.
Sourcepub fn resolve_path(
&self,
igc_hash: &str,
) -> Result<Option<PathBuf>, StoreError>
pub fn resolve_path( &self, igc_hash: &str, ) -> Result<Option<PathBuf>, StoreError>
Resolve a local read-only filesystem path for a BLAKE3-keyed blob.
Returns Some(path) when the blob is present in the flat-file store.
The caller may read the file directly in read-only mode; mutation must
go through publish() or the store’s put() method.