risq 0.4.1

Re-implementation of Bisq (https://github.com/bisq-network/bisq) in rust
Documentation
use crate::{
    bisq::{
        constants::{BaseCurrencyNetwork, LOCAL_CAPABILITIES},
        payload::*,
    },
    p2p::{
        dispatch::*, message::Direct, server, BootstrapState, Broadcaster, ConnectionId, Peers,
        Status,
    },
    prelude::*,
};
use std::path::Path;

#[derive(Clone)]
struct SeedDataResponder(Addr<Broadcaster>);
impl Dispatcher for SeedDataResponder {
    fn dispatch(&self, conn: ConnectionId, msg: network_envelope::Message) -> Dispatch {
        match msg {
            network_envelope::Message::PreliminaryGetDataRequest(request) => {
                arbiter_spawn!(self.0.send(Direct(
                    GetDataResponse {
                        request_nonce: request.nonce,
                        is_get_updated_data_response: false,
                        data_set: Vec::new(),
                        supported_capabilities: LOCAL_CAPABILITIES.clone(),
                        persistable_network_payload_items: Vec::new(),
                    },
                    conn
                )));
                Dispatch::Consumed
            }
            network_envelope::Message::GetUpdatedDataRequest(request) => {
                arbiter_spawn!(self.0.send(Direct(
                    GetDataResponse {
                        request_nonce: request.nonce,
                        is_get_updated_data_response: true,
                        data_set: Vec::new(),
                        supported_capabilities: LOCAL_CAPABILITIES.clone(),
                        persistable_network_payload_items: Vec::new(),
                    },
                    conn
                )));
                Dispatch::Consumed
            }
            _ => Dispatch::Retained(msg),
        }
    }
}

pub fn run(server_port: u16, _fixtures: Option<&Path>) {
    let sys = System::new("risq");

    let network = BaseCurrencyNetwork::BtcRegtest;
    let broadcaster = Broadcaster::start();
    let bootstrap_state = BootstrapState::init();
    let p2p_status = Status::new(bootstrap_state.clone());

    let peers = Peers::start(
        network,
        broadcaster.clone(),
        p2p_status,
        SeedDataResponder(broadcaster),
        None,
    );

    server::start(server_port, peers, None, None);

    let _ = sys.run();
}