cyfs_bdt/tunnel/builder/connect_stream/
action.rs

1use 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}