xwt_tests/
utils.rs

1use xwt_core::prelude::*;
2
3pub async fn connect<Endpoint>(
4    endpoint: &Endpoint,
5    url: &str,
6) -> Result<ConnectSessionFor<Endpoint>, xwt_error::Connect<Endpoint>>
7where
8    Endpoint: xwt_core::endpoint::Connect,
9{
10    let connecting = endpoint
11        .connect(url)
12        .await
13        .map_err(xwt_error::Connect::Connect)?;
14
15    let session = connecting
16        .wait_connect()
17        .await
18        .map_err(xwt_error::Connect::Connecting)?;
19
20    Ok(session)
21}
22
23pub async fn ok_accepting<Accepting>(
24    accepting: Accepting,
25) -> Result<AcceptingSessionFor<Accepting>, xwt_error::Accepting<Accepting>>
26where
27    Accepting: xwt_core::endpoint::accept::Accepting,
28    AcceptingSessionFor<Accepting>: xwt_core::base::Session,
29{
30    let request = accepting
31        .wait_accept()
32        .await
33        .map_err(xwt_error::Accepting::Accepting)?;
34
35    let session = request
36        .ok()
37        .await
38        .map_err(xwt_error::Accepting::RequestOk)?;
39
40    Ok(session)
41}
42
43pub async fn open_bi<Session>(
44    session: &Session,
45) -> Result<BiStreamsFor<Session>, xwt_error::OpenBi<Session>>
46where
47    Session: xwt_core::session::stream::OpenBi,
48{
49    let opening = session.open_bi().await.map_err(xwt_error::OpenBi::Open)?;
50    let streams = opening
51        .wait_bi()
52        .await
53        .map_err(xwt_error::OpenBi::Opening)?;
54
55    Ok(streams)
56}
57
58pub async fn open_uni<Session>(
59    session: &Session,
60) -> Result<SendUniStreamFor<Session>, xwt_error::OpenUni<Session>>
61where
62    Session: xwt_core::session::stream::OpenUni,
63{
64    let opening = session.open_uni().await.map_err(xwt_error::OpenUni::Open)?;
65    let stream = opening
66        .wait_uni()
67        .await
68        .map_err(xwt_error::OpenUni::Opening)?;
69
70    Ok(stream)
71}