1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
use async_trait::{async_trait};
use cyfs_base::*;
use crate::{
    types::*, 
    protocol::{*, v0::*}, 
};

#[derive(PartialEq, Eq)]
pub enum TunnelBuilderState {
    Connecting, 
    Establish, 
    Closed
}

#[async_trait]
pub trait TunnelBuilder: Send + Sync + OnPackage<AckProxy, &'static DeviceId> {
    fn sequence(&self) -> TempSeq;
    fn state(&self) -> TunnelBuilderState;
    async fn wait_establish(&self) -> Result<(), BuckyError>;
}