pub struct BulkheadExecutor { /* private fields */ }Expand description
Bulkhead semaphore for resource isolation with metrics and panic recovery
Implementations§
Source§impl BulkheadExecutor
impl BulkheadExecutor
Sourcepub fn new(name: String, config: BulkheadConfig) -> Self
pub fn new(name: String, config: BulkheadConfig) -> Self
Create a new bulkhead executor with metrics tracking
Sourcepub fn ValidateConfig(config: &BulkheadConfig) -> Result<(), String>
pub fn ValidateConfig(config: &BulkheadConfig) -> Result<(), String>
Validate bulkhead configuration
Sourcepub async fn Execute<F, R>(&self, f: F) -> Result<R, String>
pub async fn Execute<F, R>(&self, f: F) -> Result<R, String>
Execute with bulkhead protection and panic recovery
Sourcepub async fn GetStatistics(&self) -> BulkheadStatistics
pub async fn GetStatistics(&self) -> BulkheadStatistics
Get bulkhead statistics for metrics
Sourcepub async fn GetUtilization(&self) -> f64
pub async fn GetUtilization(&self) -> f64
Calculate utilization percentage
Trait Implementations§
Auto Trait Implementations§
impl Freeze for BulkheadExecutor
impl !RefUnwindSafe for BulkheadExecutor
impl Send for BulkheadExecutor
impl Sync for BulkheadExecutor
impl Unpin for BulkheadExecutor
impl !UnwindSafe for BulkheadExecutor
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Applies the layer to a service and wraps it in [
Layered].