♻️ refactor

main
_ 2021-07-18 18:41:25 +00:00
parent 4820722ec2
commit d5431b5c62
2 changed files with 25 additions and 39 deletions

View File

@ -10,7 +10,10 @@ pub use std::{
time::Duration,
};
pub use anyhow::bail;
pub use anyhow::{
Context,
bail,
};
pub use futures_util::StreamExt;
pub use tokio::{
io::{

View File

@ -24,28 +24,13 @@ pub async fn p2_connect_to_p3 (
) -> anyhow::Result <quinn::NewConnection>
{
let new_conn = endpoint.connect (relay_addr, "localhost")?.await?;
let (mut send, mut recv) = new_conn.connection.open_bi ().await?;
let cmd_type = Command::CONNECT_P2_TO_P3.0;
let req_buf = [
Command::CONNECT_P2_TO_P3.0,
client_id,
0,
0,
];
send.write_all (&req_buf).await?;
send.write_all (&[cmd_type, client_id, 0, 0]).await?;
let mut resp_buf = [0, 0, 0, 0];
recv.read_exact (&mut resp_buf).await?;
let expected = [
Command::OKAY.0,
Command::CONNECT_P2_TO_P3.0,
0,
0,
];
if resp_buf != expected {
bail! ("P2 didn't get OK response when connecting to P3");
}
expect_exact_response (&mut recv, [Command::OKAY.0, cmd_type, 0, 0]).await
.context ("P2 didn't get OK response when connecting to P3")?;
Ok (new_conn)
}
@ -111,28 +96,26 @@ pub async fn p4_connect_to_p3 (
) -> anyhow::Result <quinn::NewConnection>
{
let new_conn = endpoint.connect (relay_addr, "localhost")?.await?;
let (mut send, mut recv) = new_conn.connection.open_bi ().await?;
let cmd_type = Command::CONNECT_P4_TO_P3.0;
let req_buf = [
Command::CONNECT_P4_TO_P3.0,
server_id,
0,
0,
];
send.write_all (&req_buf).await?;
send.write_all (&[cmd_type, server_id, 0, 0]).await?;
let mut resp_buf = [0, 0, 0, 0];
recv.read_exact (&mut resp_buf).await?;
let expected = [
Command::OKAY.0,
Command::CONNECT_P4_TO_P3.0,
0,
0,
];
if resp_buf != expected {
bail! ("P4 didn't get OK response when connecting to P3");
}
expect_exact_response (&mut recv, [Command::OKAY.0, cmd_type, 0, 0]).await
.context ("P4 didn't get OK response when connecting to P3")?;
Ok (new_conn)
}
async fn expect_exact_response (
recv: &mut RecvStream, expected: [u8; 4]
) -> anyhow::Result <()>
{
let mut resp_buf = [0, 0, 0, 0];
recv.read_exact (&mut resp_buf).await?;
if resp_buf != expected {
bail! ("Didn't receive exact response");
}
Ok (())
}