use std::{net::SocketAddr, time::SystemTime};
use async_trait::async_trait;
use nanorpc::nanorpc_derive;
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Clone, Debug, Eq, Hash, PartialEq)]
pub struct B2eMetadata {
pub protocol: ObfsProtocol,
pub expiry: SystemTime,
}
#[derive(Serialize, Deserialize, Clone, Debug, Eq, Hash, PartialEq)]
pub enum ObfsProtocol {
Sosistab3(String),
}
#[nanorpc_derive]
#[async_trait]
pub trait BridgeControlProtocol {
async fn tcp_forward(&self, b2e_dest: SocketAddr, metadata: B2eMetadata) -> SocketAddr;
}