pub struct Mirror { /* private fields */ }Expand description
One mirror target: backends (round-robin) and the share of requests copied to it. Cheap to clone; clones share their state.
Implementations§
Source§impl Mirror
impl Mirror
Sourcepub fn new(name: impl Into<String>, backends: Vec<String>) -> Mirror
pub fn new(name: impl Into<String>, backends: Vec<String>) -> Mirror
Copy every request to backends (round-robin).
Sourcepub fn with_live_backends(
name: impl Into<String>,
backends: Arc<RwLock<Vec<String>>>,
) -> Mirror
pub fn with_live_backends( name: impl Into<String>, backends: Arc<RwLock<Vec<String>>>, ) -> Mirror
Like Mirror::new, with a backend list another component updates
(a config-file upstream’s health-checked list).
Sourcepub fn percent(self, percent: f64) -> Mirror
pub fn percent(self, percent: f64) -> Mirror
Copy only this share of requests (0–100), spread evenly: 25 copies every 4th request, not 25 in a row.
pub fn name(&self) -> &str
Sourcepub fn send(&self, request: &Request, connection: &ConnectionInfo) -> bool
pub fn send(&self, request: &Request, connection: &ConnectionInfo) -> bool
Queue a copy of request if it’s in the sampled share; never blocks.
true when a copy was queued.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Mirror
impl RefUnwindSafe for Mirror
impl Send for Mirror
impl Sync for Mirror
impl Unpin for Mirror
impl UnsafeUnpin for Mirror
impl UnwindSafe for Mirror
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more