Move CLI network protocols into network module

Adds asb module to the network module.
This commit is contained in:
Daniel Karzel 2021-05-26 11:03:56 +10:00
parent da7c3a9c9a
commit c6db22d882
No known key found for this signature in database
GPG Key ID: 30C3FC2E438ADB6E
8 changed files with 43 additions and 38 deletions

View File

@ -2,6 +2,7 @@ mod impl_from_rr_event;
pub mod asb; pub mod asb;
pub mod cbor_request_response; pub mod cbor_request_response;
pub mod cli;
pub mod encrypted_signature; pub mod encrypted_signature;
pub mod json_pull_codec; pub mod json_pull_codec;
pub mod quote; pub mod quote;

View File

@ -311,9 +311,8 @@ mod tests {
use crate::asb::Rate; use crate::asb::Rate;
use crate::env::GetConfig; use crate::env::GetConfig;
use crate::monero; use crate::monero;
use crate::network::asb;
use crate::network::test::{await_events_or_timeout, connect, new_swarm}; use crate::network::test::{await_events_or_timeout, connect, new_swarm};
use crate::protocol::bob; use crate::network::{asb, cli};
use super::*; use super::*;
@ -358,7 +357,7 @@ mod tests {
balance: monero::Amount::ZERO, balance: monero::Amount::ZERO,
buy: btc_to_swap, buy: btc_to_swap,
}, },
bob::spot_price::Error::BalanceTooLow { buy: btc_to_swap }, cli::spot_price::Error::BalanceTooLow { buy: btc_to_swap },
) )
.await; .await;
} }
@ -384,7 +383,7 @@ mod tests {
balance: monero::Amount::ZERO, balance: monero::Amount::ZERO,
buy: btc_to_swap, buy: btc_to_swap,
}, },
bob::spot_price::Error::BalanceTooLow { buy: btc_to_swap }, cli::spot_price::Error::BalanceTooLow { buy: btc_to_swap },
) )
.await; .await;
} }
@ -407,7 +406,7 @@ mod tests {
balance, balance,
buy: btc_to_swap, buy: btc_to_swap,
}, },
bob::spot_price::Error::BalanceTooLow { buy: btc_to_swap }, cli::spot_price::Error::BalanceTooLow { buy: btc_to_swap },
) )
.await; .await;
} }
@ -426,7 +425,7 @@ mod tests {
buy: btc_to_swap, buy: btc_to_swap,
min: min_buy, min: min_buy,
}, },
bob::spot_price::Error::AmountBelowMinimum { cli::spot_price::Error::AmountBelowMinimum {
buy: btc_to_swap, buy: btc_to_swap,
min: min_buy, min: min_buy,
}, },
@ -449,7 +448,7 @@ mod tests {
buy: btc_to_swap, buy: btc_to_swap,
max: max_buy, max: max_buy,
}, },
bob::spot_price::Error::AmountAboveMaximum { cli::spot_price::Error::AmountAboveMaximum {
buy: btc_to_swap, buy: btc_to_swap,
max: max_buy, max: max_buy,
}, },
@ -466,7 +465,7 @@ mod tests {
test.construct_and_send_request(btc_to_swap); test.construct_and_send_request(btc_to_swap);
test.assert_error( test.assert_error(
asb::spot_price::Error::ResumeOnlyMode, asb::spot_price::Error::ResumeOnlyMode,
bob::spot_price::Error::NoSwapsAccepted, cli::spot_price::Error::NoSwapsAccepted,
) )
.await; .await;
} }
@ -481,7 +480,7 @@ mod tests {
test.construct_and_send_request(btc_to_swap); test.construct_and_send_request(btc_to_swap);
test.assert_error( test.assert_error(
asb::spot_price::Error::LatestRateFetchFailed(Box::new(TestRateError {})), asb::spot_price::Error::LatestRateFetchFailed(Box::new(TestRateError {})),
bob::spot_price::Error::Other, cli::spot_price::Error::Other,
) )
.await; .await;
} }
@ -500,7 +499,7 @@ mod tests {
asb::spot_price::Error::SellQuoteCalculationFailed(anyhow!( asb::spot_price::Error::SellQuoteCalculationFailed(anyhow!(
"Error text irrelevant, won't be checked here" "Error text irrelevant, won't be checked here"
)), )),
bob::spot_price::Error::Other, cli::spot_price::Error::Other,
) )
.await; .await;
} }
@ -525,7 +524,7 @@ mod tests {
monero: monero::Network::Mainnet, monero: monero::Network::Mainnet,
}, },
}, },
bob::spot_price::Error::BlockchainNetworkMismatch { cli::spot_price::Error::BlockchainNetworkMismatch {
cli: BlockchainNetwork { cli: BlockchainNetwork {
bitcoin: bitcoin::Network::Testnet, bitcoin: bitcoin::Network::Testnet,
monero: monero::Network::Stagenet, monero: monero::Network::Stagenet,
@ -564,7 +563,7 @@ mod tests {
monero: monero::Network::Stagenet, monero: monero::Network::Stagenet,
}, },
}, },
bob::spot_price::Error::BlockchainNetworkMismatch { cli::spot_price::Error::BlockchainNetworkMismatch {
cli: BlockchainNetwork { cli: BlockchainNetwork {
bitcoin: bitcoin::Network::Bitcoin, bitcoin: bitcoin::Network::Bitcoin,
monero: monero::Network::Mainnet, monero: monero::Network::Mainnet,
@ -598,7 +597,7 @@ mod tests {
values.resume_only, values.resume_only,
) )
}); });
let (mut bob_swarm, ..) = new_swarm(|_, _| bob::spot_price::bob()); let (mut bob_swarm, ..) = new_swarm(|_, _| cli::spot_price::bob());
connect(&mut alice_swarm, &mut bob_swarm).await; connect(&mut alice_swarm, &mut bob_swarm).await;
@ -660,7 +659,7 @@ mod tests {
async fn assert_error( async fn assert_error(
&mut self, &mut self,
alice_assert: asb::spot_price::Error, alice_assert: asb::spot_price::Error,
bob_assert: bob::spot_price::Error, bob_assert: cli::spot_price::Error,
) { ) {
match await_events_or_timeout(self.alice_swarm.next(), self.bob_swarm.next()).await { match await_events_or_timeout(self.alice_swarm.next(), self.bob_swarm.next()).await {
( (

3
swap/src/network/cli.rs Normal file
View File

@ -0,0 +1,3 @@
pub mod behaviour;
mod execution_setup;
pub mod spot_price;

View File

@ -1,12 +1,14 @@
use crate::network::quote::BidQuote; use std::time::Duration;
use crate::network::{encrypted_signature, quote, redial, spot_price, transfer_proof};
use crate::protocol::bob;
use crate::protocol::bob::{execution_setup, State2};
use anyhow::{anyhow, Error, Result}; use anyhow::{anyhow, Error, Result};
use libp2p::core::Multiaddr; use libp2p::core::Multiaddr;
use libp2p::request_response::{RequestId, ResponseChannel}; use libp2p::request_response::{RequestId, ResponseChannel};
use libp2p::{NetworkBehaviour, PeerId}; use libp2p::{NetworkBehaviour, PeerId};
use std::time::Duration;
use crate::network::cli::execution_setup;
use crate::network::quote::BidQuote;
use crate::network::{cli, encrypted_signature, quote, redial, spot_price, transfer_proof};
use crate::protocol::bob::State2;
#[derive(Debug)] #[derive(Debug)]
pub enum OutEvent { pub enum OutEvent {
@ -72,7 +74,7 @@ impl Behaviour {
pub fn new(alice: PeerId) -> Self { pub fn new(alice: PeerId) -> Self {
Self { Self {
quote: quote::bob(), quote: quote::bob(),
spot_price: bob::spot_price::bob(), spot_price: cli::spot_price::bob(),
execution_setup: Default::default(), execution_setup: Default::default(),
transfer_proof: transfer_proof::bob(), transfer_proof: transfer_proof::bob(),
encrypted_signature: encrypted_signature::bob(), encrypted_signature: encrypted_signature::bob(),

View File

@ -1,22 +1,21 @@
use crate::database::Database;
use crate::{bitcoin, env, monero};
use anyhow::Result;
use std::sync::Arc; use std::sync::Arc;
use anyhow::Result;
use uuid::Uuid; use uuid::Uuid;
pub use self::behaviour::{Behaviour, OutEvent}; use crate::database::Database;
pub use crate::network::cli::behaviour::{Behaviour, OutEvent};
use crate::{bitcoin, env, monero};
pub use self::cancel::cancel; pub use self::cancel::cancel;
pub use self::event_loop::{EventLoop, EventLoopHandle}; pub use self::event_loop::{EventLoop, EventLoopHandle};
pub use self::refund::refund; pub use self::refund::refund;
pub use self::state::*; pub use self::state::*;
pub use self::swap::{run, run_until}; pub use self::swap::{run, run_until};
mod behaviour;
pub mod cancel; pub mod cancel;
pub mod event_loop; pub mod event_loop;
mod execution_setup;
pub mod refund; pub mod refund;
pub mod spot_price;
pub mod state; pub mod state;
pub mod swap; pub mod swap;

View File

@ -1,21 +1,22 @@
use crate::bitcoin::EncryptedSignature; use std::collections::HashMap;
use crate::network::quote::BidQuote; use std::sync::Arc;
use crate::network::spot_price::{BlockchainNetwork, Response}; use std::time::Duration;
use crate::network::{encrypted_signature, spot_price};
use crate::protocol::bob;
use crate::protocol::bob::{Behaviour, OutEvent, State0, State2};
use crate::{bitcoin, env, monero};
use anyhow::{bail, Context, Result}; use anyhow::{bail, Context, Result};
use futures::future::{BoxFuture, OptionFuture}; use futures::future::{BoxFuture, OptionFuture};
use futures::{FutureExt, StreamExt}; use futures::{FutureExt, StreamExt};
use libp2p::request_response::{RequestId, ResponseChannel}; use libp2p::request_response::{RequestId, ResponseChannel};
use libp2p::swarm::SwarmEvent; use libp2p::swarm::SwarmEvent;
use libp2p::{PeerId, Swarm}; use libp2p::{PeerId, Swarm};
use std::collections::HashMap;
use std::sync::Arc;
use std::time::Duration;
use uuid::Uuid; use uuid::Uuid;
use crate::bitcoin::EncryptedSignature;
use crate::network::quote::BidQuote;
use crate::network::spot_price::{BlockchainNetwork, Response};
use crate::network::{cli, encrypted_signature, spot_price};
use crate::protocol::bob::{Behaviour, OutEvent, State0, State2};
use crate::{bitcoin, env, monero};
#[allow(missing_debug_implementations)] #[allow(missing_debug_implementations)]
pub struct EventLoop { pub struct EventLoop {
swap_id: Uuid, swap_id: Uuid,
@ -280,7 +281,7 @@ impl EventLoopHandle {
match response { match response {
Response::Xmr(xmr) => Ok(xmr), Response::Xmr(xmr) => Ok(xmr),
Response::Error(error) => { Response::Error(error) => {
let error: bob::spot_price::Error = error.into(); let error: cli::spot_price::Error = error.into();
bail!(error); bail!(error);
} }
} }