[−][src]Crate koibumi_node
This crate is an experimental Bitmessage node library.
This crate uses
koibumi-core library crate.
For more information, see
koibumi application crate.
Examples
use async_std::task; use futures::{sink::SinkExt, stream::StreamExt}; use koibumi_node::{self as node, Command, Config, Event, Response}; let (command_sender, mut response_receiver, handle) = node::spawn(); let config = Config::builder() .server(Some("127.0.0.1:8444".parse().unwrap())) .socks(Some("127.0.0.1:9050".parse().unwrap())) .connect_to_onion(true) .connect_to_ip(true) .seeds(vec!["quzwelsuziwqgpt2.onion:8444".parse().unwrap()]) .build(); let mut sender = command_sender; let response = task::block_on(async { let pool = sqlx::Pool::new("sqlite::memory:").await; if let Err(err) = pool { eprintln!("{}", err); return None; } let pool = pool.unwrap(); if let Err(err) = sender.send(Command::Start(config.into(), pool)).await { eprintln!("{}", err); return None; } response_receiver.next().await }); let Response::Started(mut receiver) = response.unwrap(); task::block_on(async { while let Some(event) = receiver.next().await { match event { Event::ConnectionCounts { .. } => (), Event::AddrCount(_count) => (), Event::Established { addr, user_agent, rating } => { println!("established: {} {} rating:{}", addr, user_agent, rating); } Event::Disconnected { addr } => { println!("disconnected: {}", addr); } Event::Objects { .. } => (), Event::Stopped => { break; } } } handle.await; });
Structs
| Config | A set of configurations for a Koibumi Bitmessage node. |
| ConfigBuilder | A builder for building a configuration set for a Koibumi Bitmessage node. |
| Rating | A rating of the connectivity of a node. |
Enums
| Command | The commands which accepted by a node. |
| Event | The events which occur in a Bitmessage node. |
| Response | The responses to the commands. |
Functions
| run | Runs an event loop that manage a Bitmessage node. |
| spawn | Spawns a task that manage a Bitmessage node. |