pub struct ConnectionHandle {
pub id: String,
pub created_at: SystemTime,
pub last_used: SystemTime,
pub health_score: f64,
pub error_count: usize,
}Expand description
Handle representing an active connection
This structure tracks the state and health of an individual connection in the connection pool.
§Health Scoring
The health score ranges from 0.0 to 100.0:
- 100.0: Perfect health
- 75.0-99.9: Good health
- 50.0-74.9: Degraded health
- 0.0-49.9: Poor health
Health is updated based on operation success/failure:
- Success: +10 points (max 100)
- Failure: -25 points (min 0)
§Example Usage
ⓘ
let mut handle = ConnectionHandle::new();
// Update health based on operation success
handle.update_health(true); // Success
handle.update_health(false); // Failure
// Check if connection is healthy
if handle.is_healthy() {
// Use the connection
}Fields§
§id: StringUnique connection identifier (UUID)
created_at: SystemTimeWhen the connection was created (as SystemTime for serialization)
last_used: SystemTimeWhen the connection was last used (as SystemTime for serialization)
health_score: f64Health score (0.0 to 100.0)
error_count: usizeNumber of consecutive errors
Implementations§
Source§impl ConnectionHandle
impl ConnectionHandle
Sourcepub fn update_health(&mut self, success: bool)
pub fn update_health(&mut self, success: bool)
Sourcepub fn is_healthy(&self) -> bool
pub fn is_healthy(&self) -> bool
Check if connection is healthy
A connection is considered healthy if:
- Health score > 50.0
- Error count < 5
§Returns
true: Connection is healthyfalse: Connection is unhealthy
Sourcepub fn age_seconds(&self) -> u64
pub fn age_seconds(&self) -> u64
Get connection age in seconds
Sourcepub fn idle_seconds(&self) -> u64
pub fn idle_seconds(&self) -> u64
Get time since last use in seconds
Sourcepub fn status(&self) -> ConnectionStatus
pub fn status(&self) -> ConnectionStatus
Get connection status
Sourcepub fn reset_health(&mut self)
pub fn reset_health(&mut self)
Reset health score to perfect
Trait Implementations§
Source§impl Clone for ConnectionHandle
impl Clone for ConnectionHandle
Source§fn clone(&self) -> ConnectionHandle
fn clone(&self) -> ConnectionHandle
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for ConnectionHandle
impl Debug for ConnectionHandle
Source§impl<'de> Deserialize<'de> for ConnectionHandle
impl<'de> Deserialize<'de> for ConnectionHandle
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for ConnectionHandle
impl RefUnwindSafe for ConnectionHandle
impl Send for ConnectionHandle
impl Sync for ConnectionHandle
impl Unpin for ConnectionHandle
impl UnwindSafe for ConnectionHandle
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<'de, D, R> CommandArg<'de, R> for Dwhere
D: Deserialize<'de>,
R: Runtime,
impl<'de, D, R> CommandArg<'de, R> for Dwhere
D: Deserialize<'de>,
R: Runtime,
§fn from_command(command: CommandItem<'de, R>) -> Result<D, InvokeError>
fn from_command(command: CommandItem<'de, R>) -> Result<D, InvokeError>
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§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].