mod http2_client_pool_builder;
mod http2_client_pool_resource;
mod http2_rm;
#[cfg(all(feature = "_integration-tests", test))]
mod integration_tests;
use crate::{
net::UriRef,
pool::{ResourceManager, SimplePool, SimplePoolGetElem, SimplePoolResource},
sync::AsyncMutexGuard,
};
pub use http2_client_pool_builder::Http2ClientPoolBuilder;
pub use http2_client_pool_resource::Http2ClientPoolResource;
pub use http2_rm::Http2RM;
#[derive(Debug)]
pub struct Http2ClientPool<AUX, EX, TM>
where
Http2RM<AUX, EX, TM>: ResourceManager,
{
pool: SimplePool<Http2RM<AUX, EX, TM>>,
}
impl<AUX, EX, TM, R> Http2ClientPool<AUX, EX, TM>
where
Http2RM<AUX, EX, TM>:
ResourceManager<CreateAux = str, Error = crate::Error, RecycleAux = str, Resource = R>,
{
#[inline]
pub async fn lock<'this>(
&'this self,
uri: &UriRef<'_>,
) -> crate::Result<SimplePoolGetElem<AsyncMutexGuard<'this, SimplePoolResource<R>>>>
where
R: 'this,
{
self.pool.get(uri.as_str(), uri.as_str()).await
}
}