pub struct RecoveryOptions {Show 15 fields
pub max_retries: u32,
pub maximum_retry_exposure_seconds: f64,
pub reconnect_delay_seconds: f64,
pub command_timeout_seconds: f64,
pub download_timeout_seconds: f64,
pub exposure_grace_seconds: f64,
pub cooling_timeout_seconds: f64,
pub temperature_tolerance_c: f64,
pub cooling_stable_samples: u32,
pub cooling_sample_seconds: f64,
pub ready_frame_download_retries: u32,
pub direct_read_retries: u32,
pub direct_read_chunk_kib: u32,
pub usb_reset_after_failures: u32,
pub usb_port_cycle: bool,
}Fields§
§max_retries: u32§maximum_retry_exposure_seconds: f64§reconnect_delay_seconds: f64§command_timeout_seconds: f64§download_timeout_seconds: f64§exposure_grace_seconds: f64§cooling_timeout_seconds: f64§temperature_tolerance_c: f64§cooling_stable_samples: u32§cooling_sample_seconds: f64§ready_frame_download_retries: u32§direct_read_retries: u32§direct_read_chunk_kib: u32§usb_reset_after_failures: u32§usb_port_cycle: boolImplementations§
Source§impl RecoveryOptions
impl RecoveryOptions
Sourcepub fn fields() -> Vec<RecoveryField>
pub fn fields() -> Vec<RecoveryField>
Examples found in repository?
examples/export_recovery.rs (line 9)
5fn managed_options() -> String {
6 let mut text = String::from(
7 "// Generated by regain-core export_recovery; edit recovery.rs instead.\nnamespace Regain.Core;\n\npublic sealed record RecoveryOptions\n{\n",
8 );
9 let fields = RecoveryOptions::fields();
10 for field in &fields {
11 let name = format!("{}{}", field.key[..1].to_uppercase(), &field.key[1..]);
12 let ty = match field.value_type {
13 RecoveryType::Integer(_, _) | RecoveryType::PowerOfTwo(_, _) => "int",
14 RecoveryType::Number { .. } => "double",
15 RecoveryType::Boolean => "bool",
16 };
17 writeln!(
18 text,
19 " public {ty} {name} {{ get; init; }} = {};",
20 field.default
21 )
22 .unwrap();
23 }
24 text.push_str(" public void Validate()\n {\n");
25 for field in fields {
26 let name = format!("{}{}", field.key[..1].to_uppercase(), &field.key[1..]);
27 let condition = match field.value_type {
28 RecoveryType::Integer(min, max) => format!("{name} < {min} || {name} > {max}"),
29 RecoveryType::PowerOfTwo(min, max) => {
30 format!("{name} < {min} || {name} > {max} || ({name} & ({name} - 1)) != 0")
31 }
32 RecoveryType::Number {
33 minimum,
34 exclusive,
35 maximum,
36 } => format!(
37 "double.IsNaN({name}) || double.IsInfinity({name}) || {name} {} {minimum} || {name} > {maximum}",
38 if exclusive { "<=" } else { "<" }
39 ),
40 RecoveryType::Boolean => continue,
41 };
42 writeln!(text, " if ({condition})\n throw new System.ArgumentOutOfRangeException(nameof({name}));").unwrap();
43 }
44 text.push_str(" }\n}\n");
45 text
46}pub fn validate(&self) -> Result<()>
Sourcepub fn schema() -> Value
pub fn schema() -> Value
Strict hub/frontend schema without a schema/compiler dependency. Legacy profile loading intentionally still tolerates unknown keys.
Examples found in repository?
examples/export_recovery.rs (line 75)
63fn main() -> Result<(), Box<dyn Error>> {
64 let mut args = std::env::args().skip(1);
65 let contract = args
66 .next()
67 .ok_or("Usage: export_recovery CONTRACT MANAGED [--check]")?;
68 let managed = args
69 .next()
70 .ok_or("Usage: export_recovery CONTRACT MANAGED [--check]")?;
71 let option = args.next();
72 if option.as_deref().is_some_and(|s| s != "--check") || args.next().is_some() {
73 return Err("Unknown option".into());
74 }
75 let description = serde_json::json!({"contractVersion":1,"schema":RecoveryOptions::schema()});
76 save(
77 Path::new(&contract),
78 &(serde_json::to_string_pretty(&description)? + "\n"),
79 option.is_some(),
80 )?;
81 save(Path::new(&managed), &managed_options(), option.is_some())
82}Source§impl RecoveryOptions
impl RecoveryOptions
Sourcepub fn replacement_exposures(&self, microseconds: u64) -> u32
pub fn replacement_exposures(&self, microseconds: u64) -> u32
Same microsecond exposure and inclusive threshold used by core capture and every native outer supervisor. Rereads have separate eligibility.
Trait Implementations§
Source§impl Clone for RecoveryOptions
impl Clone for RecoveryOptions
Source§impl Debug for RecoveryOptions
impl Debug for RecoveryOptions
Source§impl Default for RecoveryOptions
impl Default for RecoveryOptions
Source§impl<'de> Deserialize<'de> for RecoveryOptionswhere
RecoveryOptions: Default,
impl<'de> Deserialize<'de> for RecoveryOptionswhere
RecoveryOptions: Default,
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
Source§impl PartialEq for RecoveryOptions
impl PartialEq for RecoveryOptions
Source§impl Serialize for RecoveryOptions
impl Serialize for RecoveryOptions
impl StructuralPartialEq for RecoveryOptions
Auto Trait Implementations§
impl Freeze for RecoveryOptions
impl RefUnwindSafe for RecoveryOptions
impl Send for RecoveryOptions
impl Sync for RecoveryOptions
impl Unpin for RecoveryOptions
impl UnsafeUnpin for RecoveryOptions
impl UnwindSafe for RecoveryOptions
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