pub struct AdvisorCircuit {
pub opened_by: String,
pub failures: u32,
pub until: String,
}Expand description
An open circuit: the consultation that opened it, the failures behind it, and when it closes. Derived from the records and the clock, never stored.
use majordomus_cli::reasoning::availability::*;
use majordomus_cli::reasoning::catalogue::{AdvisorCatalogue, References};
use majordomus_cli::reasoning::record::ConsultationStatus;
struct All;
impl Presence for All {
fn executable(&self, _: &str) -> bool { true }
fn variable(&self, _: &str) -> bool { true }
}
let c: AdvisorCatalogue = majordomus_cli::metadata::yaml::parse_into(
"version: 1\ncapabilities:\n - id: code_review\n description: x\nadvisors:\n - id: a\n title: A\n transport: cli\n adapter: a-cli\n executable: a\n capabilities: [code_review]\n",
).unwrap();
let limited = [Outcome {
id: "consultation-1".into(), advisor: "a".into(),
status: ConsultationStatus::RateLimited, at: 0, retry_after: Some(60),
}];
let refs = References::default();
let states = derive_availability(&c, &Inputs {
refs: &refs, presence: &All, mode: ReasoningMode::Standard, disabled: &[],
history: &limited, peers: &[], now: 10, cooldown: None,
});
let circuit: &AdvisorCircuit = states[0].circuit.as_ref().unwrap();
assert_eq!(circuit.opened_by, "consultation-1");
assert_eq!(circuit.until, "1970-01-01T00:01:00Z");Fields§
§opened_by: StringThe consultation outcome that opened it.
failures: u32The consecutive failures behind it.
until: StringWhen it closes again, RFC 3339.
Trait Implementations§
Source§impl Clone for AdvisorCircuit
impl Clone for AdvisorCircuit
Source§fn clone(&self) -> AdvisorCircuit
fn clone(&self) -> AdvisorCircuit
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · 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 AdvisorCircuit
impl Debug for AdvisorCircuit
Source§impl<'de> Deserialize<'de> for AdvisorCircuit
impl<'de> Deserialize<'de> for AdvisorCircuit
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
impl Eq for AdvisorCircuit
Source§impl JsonSchema for AdvisorCircuit
impl JsonSchema for AdvisorCircuit
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Returns a string that uniquely identifies the schema produced by this type. Read more
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Generates a JSON Schema for this type. Read more
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
Whether JSON Schemas generated for this type should be included directly in parent schemas,
rather than being re-used where possible using the
$ref keyword. Read moreSource§impl PartialEq for AdvisorCircuit
impl PartialEq for AdvisorCircuit
Source§fn eq(&self, other: &AdvisorCircuit) -> bool
fn eq(&self, other: &AdvisorCircuit) -> bool
Tests for
self and other values to be equal, and is used by ==.Source§impl Serialize for AdvisorCircuit
impl Serialize for AdvisorCircuit
impl StructuralPartialEq for AdvisorCircuit
Auto Trait Implementations§
impl Freeze for AdvisorCircuit
impl RefUnwindSafe for AdvisorCircuit
impl Send for AdvisorCircuit
impl Sync for AdvisorCircuit
impl Unpin for AdvisorCircuit
impl UnsafeUnpin for AdvisorCircuit
impl UnwindSafe for AdvisorCircuit
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.