pub struct SubRequestConnector { /* private fields */ }Expand description
Shared HTTP connector for sub-requests.
Wraps Pingora’s Connector behind an Arc so that all
filter instances share a single connection pool. Created once at
server startup and passed through unchanged on config reload.
An optional admission semaphore limits the number of concurrently active sub-request exchanges.
use praxis_core::subrequest::SubRequestConnector;
let connector = SubRequestConnector::new(128, None);
let _clone = connector.clone();Implementations§
Source§impl SubRequestConnector
impl SubRequestConnector
Sourcepub fn new(keepalive_pool_size: usize, max_connections: Option<usize>) -> Self
pub fn new(keepalive_pool_size: usize, max_connections: Option<usize>) -> Self
Create a connector with the given keepalive pool size and optional active-connection limit.
use praxis_core::subrequest::SubRequestConnector;
let connector = SubRequestConnector::new(64, None);
let bounded = SubRequestConnector::new(64, Some(256));Sourcepub fn with_options(opts: SubRequestConnectorOptions) -> Self
pub fn with_options(opts: SubRequestConnectorOptions) -> Self
Create a connector from SubRequestConnectorOptions.
use praxis_core::subrequest::{SubRequestConnector, SubRequestConnectorOptions};
let connector = SubRequestConnector::with_options(SubRequestConnectorOptions {
keepalive_pool_size: 64,
max_connections: Some(256),
circuit_breaker: None,
});Sourcepub async fn acquire_permit(&self) -> Option<OwnedSemaphorePermit>
pub async fn acquire_permit(&self) -> Option<OwnedSemaphorePermit>
Acquire an admission permit if a concurrency limit is
configured. Returns None when no limit is set.
The returned permit must be held for the entire sub-request exchange. Dropping it releases the slot.
Sourcepub async fn try_acquire_permit(
&self,
timeout: Duration,
) -> Result<Option<OwnedSemaphorePermit>, SubRequestError>
pub async fn try_acquire_permit( &self, timeout: Duration, ) -> Result<Option<OwnedSemaphorePermit>, SubRequestError>
Try to acquire an admission permit within the given deadline.
Returns Ok(Some(permit)) if acquired, Ok(None) if no
concurrency limit is configured, or Err if the deadline
expires before a slot opens.
§Errors
Returns SubRequestError::AdmissionTimeout when the
semaphore cannot be acquired within the timeout.
Trait Implementations§
Source§impl Clone for SubRequestConnector
impl Clone for SubRequestConnector
Source§fn clone(&self) -> SubRequestConnector
fn clone(&self) -> SubRequestConnector
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more