pub struct CanaryLayer { /* private fields */ }Expand description
Weighted traffic-splitting proxy middleware.
Clone is cheap and shares state — all clones distribute traffic against
the same underlying [CanaryState], so a CanaryLayer::update on one
clone is immediately visible to a clone already wrapped into a running
Application (see the module docs for the clone-before-wrapping pattern).
Implementations§
Source§impl CanaryLayer
impl CanaryLayer
Sourcepub fn new(backends: Vec<WeightedBackend>) -> Self
pub fn new(backends: Vec<WeightedBackend>) -> Self
Build a CanaryLayer from the given weighted backends.
Backends with weight == 0 are ignored. Equivalent to
CanaryLayer::from_parts(backends, vec![]).
Sourcepub fn with_pools(pools: Vec<WeightedPool>) -> Self
pub fn with_pools(pools: Vec<WeightedPool>) -> Self
Build a CanaryLayer whose groups are all dynamically-discovered
BackendPools rather than fixed URLs. Equivalent to
CanaryLayer::from_parts(vec![], pools).
Sourcepub fn from_parts(
backends: Vec<WeightedBackend>,
pools: Vec<WeightedPool>,
) -> Self
pub fn from_parts( backends: Vec<WeightedBackend>, pools: Vec<WeightedPool>, ) -> Self
Build a CanaryLayer from a mix of fixed backends and dynamic pools.
Sourcepub fn add_pool(self, pool: BackendPool, weight: u32) -> Self
pub fn add_pool(self, pool: BackendPool, weight: u32) -> Self
Append one more dynamically-discovered group to an already-built
layer (e.g. adding a canary BackendPool alongside stable backends
passed to CanaryLayer::new). A weight of 0 is a no-op.
This is a builder method for use before .wrap(...) — for changing
an already-wrapped, already-running layer’s configuration, use
CanaryLayer::update instead.
Sourcepub fn update(&self, backends: Vec<WeightedBackend>, pools: Vec<WeightedPool>)
pub fn update(&self, backends: Vec<WeightedBackend>, pools: Vec<WeightedPool>)
Replace the entire backend/pool configuration in place — the runtime
equivalent of building a fresh layer with
CanaryLayer::from_parts, except every existing clone of this
layer (including one already wrapped into a running Application)
picks up the change on its very next request. No restart required.
Sourcepub fn path_prefix(self, prefix: impl Into<String>) -> Self
pub fn path_prefix(self, prefix: impl Into<String>) -> Self
Only proxy requests whose URI starts with prefix; pass others through.
Sourcepub fn connect_timeout_ms(self, ms: u64) -> Self
pub fn connect_timeout_ms(self, ms: u64) -> Self
Override the TCP connect timeout (default: 5 000 ms).
Sourcepub fn read_timeout_ms(self, ms: u64) -> Self
pub fn read_timeout_ms(self, ms: u64) -> Self
Override the response read timeout (default: 30 000 ms).
Trait Implementations§
Source§impl Clone for CanaryLayer
impl Clone for CanaryLayer
Source§fn clone(&self) -> CanaryLayer
fn clone(&self) -> CanaryLayer
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more