mod connector;
mod fallback;
mod forward;
mod port_bindings;
mod stream;
mod upgrade;
mod upload;
pub use connector::VsockConnector;
pub use fallback::proxy_fallback;
pub use forward::{
proxy_to_guest, proxy_to_guest_for_role, proxy_to_guest_stream, proxy_to_guest_stream_for_role,
};
pub use port_bindings::{PortBindingInfo, parse_port_bindings};
pub use stream::RawFdStream;
pub use upgrade::{proxy_with_upgrade, proxy_with_upgrade_for_role};
pub use upload::{proxy_streaming_upload, proxy_streaming_upload_for_role};
use crate::error::Result;
use crate::routing::UtilityVmRole;
use hyper_util::rt::TokioIo;
use std::future::Future;
use std::pin::Pin;
use std::time::Duration;
const HANDSHAKE_TIMEOUT: Duration = Duration::from_secs(5);
pub trait GuestConnector: Send + Sync + 'static {
fn connect(&self) -> Pin<Box<dyn Future<Output = Result<TokioIo<RawFdStream>>> + Send + '_>>;
fn connect_for(
&self,
_role: UtilityVmRole,
) -> Pin<Box<dyn Future<Output = Result<TokioIo<RawFdStream>>> + Send + '_>> {
self.connect()
}
}