[][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)
    .build();

let mut sender = command_sender;
let response = task::block_on(async {
    if let Err(err) = sender.send(Command::Start(config)).await {
        eprintln!("{}", err);
        return None;
    }
    response_receiver.next().await
});
let Response::Started(mut receiver) = response.unwrap();

task::block_on(async {
    let addr = "quzwelsuziwqgpt2.onion:8444".parse().unwrap();
    if let Err(err) = sender.send(Command::Connect(addr)).await {
        eprintln!("{}", err);
    }
});

task::block_on(async {
    while let Some(event) = receiver.next().await {
        match event {
            Event::ConnectionCounts { .. } => (),
            Event::AddrCount(_count) => (),
            Event::Established { addr, user_agent } => {
                println!("established: {} {}", addr, user_agent);
            }
            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.

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.