cyfs_bdt/tunnel/builder/connect_stream/
action.rs1use async_trait::{async_trait};
2use cyfs_base::*;
3use crate::{
4 stream::{StreamProviderSelector}
5};
6use super::super::{action::*};
7
8pub enum ConnectStreamState {
9 Connecting1,
10 PreEstablish,
11 Connecting2,
12 Establish,
13 Closed
14}
15
16pub type DynConnectStreamAction = Box<dyn ConnectStreamAction>;
17
18#[async_trait]
19pub trait ConnectStreamAction: BuildTunnelAction {
20 fn clone_as_connect_stream_action(&self) -> DynConnectStreamAction;
21 fn as_any(&self) -> &dyn std::any::Any;
22 fn state(&self) -> ConnectStreamState;
23 async fn wait_pre_establish(&self) -> ConnectStreamState;
24 async fn continue_connect(&self) -> BuckyResult<StreamProviderSelector>;
25}