use crate::{
client::{Client, ClientProviders, DefaultProviders},
provider::*,
};
#[derive(Debug)]
pub struct Builder<Providers>(pub(crate) Providers);
impl Default for Builder<DefaultProviders> {
fn default() -> Self {
Self(Default::default())
}
}
impl<Providers: ClientProviders> Builder<Providers> {
impl_provider_method!(
with_connection_id,
connection_id,
ClientProviders
);
impl_provider_method!(
with_stateless_reset_token,
stateless_reset_token,
ClientProviders
);
impl_provider_method!(
with_limits,
limits,
ClientProviders
);
impl_provider_method!(
with_mtu,
mtu,
ClientProviders
);
impl_provider_method!(
with_event,
event,
ClientProviders
);
impl_provider_method!(
with_io,
io,
ClientProviders
);
impl_provider_method!(
with_tls,
tls,
ClientProviders
);
#[cfg(any(test, feature = "unstable-provider-packet-interceptor"))]
impl_provider_method!(
with_packet_interceptor,
packet_interceptor,
ClientProviders
);
#[cfg(any(test, feature = "unstable-provider-random"))]
impl_provider_method!(
with_random,
random,
ClientProviders
);
#[cfg(feature = "unstable-provider-datagram")]
impl_provider_method!(
with_datagram,
datagram,
ClientProviders
);
#[cfg(any(test, feature = "unstable-provider-dc"))]
impl_provider_method!(
with_dc,
dc,
ClientProviders
);
impl_provider_method!(
with_congestion_controller,
congestion_controller,
ClientProviders
);
pub fn start(self) -> Result<Client, StartError> {
self.0.build().start()
}
}