tower_resilience_fallback/
events.rs1use std::time::Instant;
4use tower_resilience_core::ResilienceEvent;
5
6#[derive(Debug, Clone)]
8pub enum FallbackEvent {
9 Success {
11 pattern_name: String,
13 timestamp: Instant,
15 },
16
17 FailedAttempt {
19 pattern_name: String,
21 timestamp: Instant,
23 },
24
25 Applied {
27 pattern_name: String,
29 timestamp: Instant,
31 strategy: &'static str,
33 },
34
35 Failed {
37 pattern_name: String,
39 timestamp: Instant,
41 },
42
43 Skipped {
45 pattern_name: String,
47 timestamp: Instant,
49 },
50}
51
52impl ResilienceEvent for FallbackEvent {
53 fn event_type(&self) -> &'static str {
54 match self {
55 Self::Success { .. } => "success",
56 Self::FailedAttempt { .. } => "failed_attempt",
57 Self::Applied { .. } => "applied",
58 Self::Failed { .. } => "failed",
59 Self::Skipped { .. } => "skipped",
60 }
61 }
62
63 fn timestamp(&self) -> Instant {
64 match self {
65 Self::Success { timestamp, .. }
66 | Self::FailedAttempt { timestamp, .. }
67 | Self::Applied { timestamp, .. }
68 | Self::Failed { timestamp, .. }
69 | Self::Skipped { timestamp, .. } => *timestamp,
70 }
71 }
72
73 fn pattern_name(&self) -> &str {
74 match self {
75 Self::Success { pattern_name, .. }
76 | Self::FailedAttempt { pattern_name, .. }
77 | Self::Applied { pattern_name, .. }
78 | Self::Failed { pattern_name, .. }
79 | Self::Skipped { pattern_name, .. } => pattern_name,
80 }
81 }
82}