pub struct EngineState {
pub engine_id: Bytes,
pub engine_boots: u32,
pub engine_time: u32,
pub synced_at: Instant,
pub latest_received_engine_time: u32,
}Expand description
Discovered engine state.
Fields§
§engine_id: BytesAuthoritative engine ID
engine_boots: u32Engine boot count
engine_time: u32Engine time at last sync
synced_at: InstantLocal time when engine_time was received
latest_received_engine_time: u32Latest received engine time (for anti-replay, RFC 3414 Section 2.3)
Implementations§
Source§impl EngineState
impl EngineState
Sourcepub fn new(engine_id: Bytes, engine_boots: u32, engine_time: u32) -> Self
pub fn new(engine_id: Bytes, engine_boots: u32, engine_time: u32) -> Self
Create new engine state from discovery response.
Sourcepub fn estimated_time(&self) -> u32
pub fn estimated_time(&self) -> u32
Get the estimated current engine time.
This adds elapsed local time to the synced engine time.
Sourcepub fn update_time(&mut self, response_boots: u32, response_time: u32) -> bool
pub fn update_time(&mut self, response_boots: u32, response_time: u32) -> bool
Update time from a response.
Per RFC 3414 Section 3.2 Step 7b, only update if:
- Response boots > local boots, OR
- Response boots == local boots AND response time > latest_received_engine_time
Sourcepub fn is_in_time_window(&self, msg_boots: u32, msg_time: u32) -> bool
pub fn is_in_time_window(&self, msg_boots: u32, msg_time: u32) -> bool
Check if a message time is within the time window.
Per RFC 3414 Section 2.2.3, a message is outside the window if:
- Local boots is 2147483647 (latched), OR
- Message boots differs from local boots, OR
- |message_time - local_time| > 150 seconds
Trait Implementations§
Source§impl Clone for EngineState
impl Clone for EngineState
Source§fn clone(&self) -> EngineState
fn clone(&self) -> EngineState
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 moreAuto Trait Implementations§
impl !Freeze for EngineState
impl RefUnwindSafe for EngineState
impl Send for EngineState
impl Sync for EngineState
impl Unpin for EngineState
impl UnwindSafe for EngineState
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