Skip to content

Commit b428f7a

Browse files
committed
Use a generic implementation instead of a boxed trait
1 parent e3d85a7 commit b428f7a

File tree

2 files changed

+19
-14
lines changed

2 files changed

+19
-14
lines changed

mullvad-api/src/api.rs

+18-12
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ impl ConnectionModeProvider for AccessModeConnectionModeProvider {
245245
/// [`ApiConnectionMode::Direct`]) via a bridge ([`ApiConnectionMode::Proxied`])
246246
/// or via any supported custom proxy protocol
247247
/// ([`talpid_types::net::proxy::CustomProxy`]).
248-
pub struct AccessModeSelector {
248+
pub struct AccessModeSelector<P> {
249249
#[cfg(feature = "api-override")]
250250
api_endpoint: ApiEndpoint,
251251
cmd_rx: mpsc::UnboundedReceiver<Message>,
@@ -261,10 +261,13 @@ pub struct AccessModeSelector {
261261
current: ResolvedConnectionMode,
262262
/// `index` is used to keep track of the [`AccessMethodSetting`] to use.
263263
index: usize,
264-
provider: Box<dyn AllowedClientsProvider>,
264+
provider: P,
265265
}
266266

267-
impl AccessModeSelector {
267+
impl<P> AccessModeSelector<P>
268+
where
269+
P: AllowedClientsProvider + 'static,
270+
{
268271
pub async fn spawn(
269272
cache_dir: PathBuf,
270273
relay_selector: RelaySelector,
@@ -273,7 +276,7 @@ impl AccessModeSelector {
273276
#[cfg(feature = "api-override")] api_endpoint: ApiEndpoint,
274277
access_method_event_sender: mpsc::UnboundedSender<(AccessMethodEvent, oneshot::Sender<()>)>,
275278
address_cache: AddressCache,
276-
provider: Box<dyn AllowedClientsProvider>,
279+
provider: P,
277280
) -> Result<(AccessModeSelectorHandle, AccessModeConnectionModeProvider)> {
278281
let (cmd_tx, cmd_rx) = mpsc::unbounded();
279282

@@ -295,7 +298,7 @@ impl AccessModeSelector {
295298
&relay_selector,
296299
&mut encrypted_dns_proxy_cache,
297300
&address_cache,
298-
&*provider,
301+
&provider,
299302
)
300303
.await;
301304

@@ -539,7 +542,7 @@ impl AccessModeSelector {
539542
&self.relay_selector,
540543
&mut self.encrypted_dns_proxy_cache,
541544
&self.address_cache,
542-
&*self.provider,
545+
&self.provider,
543546
)
544547
.await
545548
}
@@ -549,7 +552,7 @@ impl AccessModeSelector {
549552
relay_selector: &RelaySelector,
550553
encrypted_dns_proxy_cache: &mut EncryptedDnsProxyState,
551554
address_cache: &AddressCache,
552-
provider: &dyn AllowedClientsProvider,
555+
provider: &P,
553556
) -> Option<ResolvedConnectionMode> {
554557
let connection_mode =
555558
Self::resolve_connection_mode(access_method, relay_selector, encrypted_dns_proxy_cache)
@@ -577,7 +580,7 @@ impl AccessModeSelector {
577580
&self.relay_selector,
578581
&mut self.encrypted_dns_proxy_cache,
579582
&self.address_cache,
580-
&*self.provider,
583+
&self.provider,
581584
)
582585
.await
583586
}
@@ -587,7 +590,7 @@ impl AccessModeSelector {
587590
relay_selector: &RelaySelector,
588591
encrypted_dns_proxy_cache: &mut EncryptedDnsProxyState,
589592
address_cache: &AddressCache,
590-
provider: &dyn AllowedClientsProvider,
593+
provider: &P,
591594
) -> ResolvedConnectionMode {
592595
match Self::resolve_inner(
593596
access_method,
@@ -651,11 +654,14 @@ impl AccessModeSelector {
651654
}
652655
}
653656

654-
pub fn resolve_allowed_endpoint(
657+
pub fn resolve_allowed_endpoint<P>(
655658
connection_mode: &ApiConnectionMode,
656659
fallback: SocketAddr,
657-
provider: &dyn AllowedClientsProvider,
658-
) -> AllowedEndpoint {
660+
provider: &P,
661+
) -> AllowedEndpoint
662+
where
663+
P: AllowedClientsProvider,
664+
{
659665
let endpoint = match connection_mode.get_endpoint() {
660666
Some(endpoint) => endpoint,
661667
None => Endpoint::from_socket_address(fallback, TransportProtocol::Tcp),

mullvad-daemon/src/lib.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -706,8 +706,7 @@ impl Daemon {
706706
.set_config(SelectorConfig::from_settings(settings));
707707
});
708708

709-
let allowed_clients_selector = AllowedClientsSelector {};
710-
let selector: Box<dyn AllowedClientsProvider> = Box::new(allowed_clients_selector);
709+
let selector = AllowedClientsSelector {};
711710

712711
let (access_mode_handler, access_mode_provider) =
713712
mullvad_api::api::AccessModeSelector::spawn(

0 commit comments

Comments
 (0)