mirror of
https://github.com/comit-network/xmr-btc-swap.git
synced 2024-10-01 01:45:40 -04:00
Merge pull request #9 from comit-network/re-order-send-recv
Re-order send/receive
This commit is contained in:
commit
1ee060b535
@ -17,6 +17,9 @@ use std::convert::{TryFrom, TryInto};
|
|||||||
pub mod message;
|
pub mod message;
|
||||||
pub use message::{Message, Message0, Message1, Message2};
|
pub use message::{Message, Message0, Message1, Message2};
|
||||||
|
|
||||||
|
// There are no guarantees that send_message and receive_massage do not block
|
||||||
|
// the flow of execution. Therefore they must be paired between Alice/Bob, one
|
||||||
|
// send to one receive in the correct order.
|
||||||
pub async fn next_state<
|
pub async fn next_state<
|
||||||
R: RngCore + CryptoRng,
|
R: RngCore + CryptoRng,
|
||||||
B: WatchForRawTransaction + BroadcastSignedTransaction,
|
B: WatchForRawTransaction + BroadcastSignedTransaction,
|
||||||
@ -31,11 +34,11 @@ pub async fn next_state<
|
|||||||
) -> Result<State> {
|
) -> Result<State> {
|
||||||
match state {
|
match state {
|
||||||
State::State0(state0) => {
|
State::State0(state0) => {
|
||||||
transport
|
let alice_message0 = state0.next_message(rng).into();
|
||||||
.send_message(state0.next_message(rng).into())
|
|
||||||
.await?;
|
|
||||||
|
|
||||||
let bob_message0 = transport.receive_message().await?.try_into()?;
|
let bob_message0 = transport.receive_message().await?.try_into()?;
|
||||||
|
transport.send_message(alice_message0).await?;
|
||||||
|
|
||||||
let state1 = state0.receive(bob_message0)?;
|
let state1 = state0.receive(bob_message0)?;
|
||||||
Ok(state1.into())
|
Ok(state1.into())
|
||||||
}
|
}
|
||||||
|
@ -21,6 +21,9 @@ use std::convert::{TryFrom, TryInto};
|
|||||||
pub mod message;
|
pub mod message;
|
||||||
pub use message::{Message, Message0, Message1, Message2, Message3};
|
pub use message::{Message, Message0, Message1, Message2, Message3};
|
||||||
|
|
||||||
|
// There are no guarantees that send_message and receive_massage do not block
|
||||||
|
// the flow of execution. Therefore they must be paired between Alice/Bob, one
|
||||||
|
// send to one receive in the correct order.
|
||||||
pub async fn next_state<
|
pub async fn next_state<
|
||||||
R: RngCore + CryptoRng,
|
R: RngCore + CryptoRng,
|
||||||
B: WatchForRawTransaction + SignTxLock + BuildTxLockPsbt + BroadcastSignedTransaction,
|
B: WatchForRawTransaction + SignTxLock + BuildTxLockPsbt + BroadcastSignedTransaction,
|
||||||
|
Loading…
Reference in New Issue
Block a user