pub struct UpgradeMonitor { /* private fields */ }Expand description
Monitors GitHub releases for new versions.
Implementations§
Source§impl UpgradeMonitor
impl UpgradeMonitor
Sourcepub fn new(
repo: String,
channel: UpgradeChannel,
check_interval_hours: u64,
) -> Self
pub fn new( repo: String, channel: UpgradeChannel, check_interval_hours: u64, ) -> Self
Create a new upgrade monitor.
§Arguments
repo- GitHub repository in “owner/repo” formatchannel- Release channel to track (Stable or Beta)check_interval_hours- How often to check for updates
Sourcepub fn with_release_cache(self, cache: ReleaseCache) -> Self
pub fn with_release_cache(self, cache: ReleaseCache) -> Self
Configure a shared disk cache for release metadata.
When set, check_for_updates will consult the cache before hitting
the GitHub API. Fresh results are written back so that other nodes
on the same machine can reuse them.
Sourcepub fn with_staged_rollout(self, node_id: &[u8], max_delay_hours: u64) -> Self
pub fn with_staged_rollout(self, node_id: &[u8], max_delay_hours: u64) -> Self
Configure staged rollout for this monitor.
§Arguments
node_id- The node’s unique identifier for deterministic delay calculationmax_delay_hours- Maximum rollout window (0 to disable)
Sourcepub fn check_interval(&self) -> Duration
pub fn check_interval(&self) -> Duration
Get the check interval.
Sourcepub fn current_version(&self) -> &Version
pub fn current_version(&self) -> &Version
Get the current version.
Sourcepub fn version_matches_channel(&self, version: &Version) -> bool
pub fn version_matches_channel(&self, version: &Version) -> bool
Check if version matches the configured channel.
- Stable channel: Only accepts versions without pre-release suffixes
- Beta channel: Accepts all versions (stable and pre-release)
Sourcepub async fn check_for_updates(&self) -> Result<Option<UpgradeInfo>>
pub async fn check_for_updates(&self) -> Result<Option<UpgradeInfo>>
Check GitHub for available updates.
This method only checks for available updates, it does not respect
staged rollout delays. Use Self::check_for_ready_upgrade for staged rollout
aware upgrade checking.
§Errors
Returns an error if the GitHub API request fails.
Sourcepub async fn check_for_ready_upgrade(&mut self) -> Result<Option<UpgradeInfo>>
pub async fn check_for_ready_upgrade(&mut self) -> Result<Option<UpgradeInfo>>
Check for available updates with staged rollout awareness.
This method:
- Checks GitHub for available updates
- If staged rollout is enabled and an upgrade is found:
- Starts tracking the upgrade detection time
- Returns
Noneuntil the calculated delay has passed - Returns the upgrade info once the node is ready to apply it
§Errors
Returns an error if the GitHub API request fails.
Sourcepub fn time_until_upgrade(&self) -> Option<Duration>
pub fn time_until_upgrade(&self) -> Option<Duration>
Get the remaining time until this node should upgrade.
Returns None if no upgrade is pending or staged rollout is disabled.
Sourcepub fn has_staged_rollout(&self) -> bool
pub fn has_staged_rollout(&self) -> bool
Check if staged rollout is enabled.
Sourcepub fn pending_version(&self) -> Option<&Version>
pub fn pending_version(&self) -> Option<&Version>
Get the pending upgrade version, if any.
Auto Trait Implementations§
impl Freeze for UpgradeMonitor
impl !RefUnwindSafe for UpgradeMonitor
impl Send for UpgradeMonitor
impl Sync for UpgradeMonitor
impl Unpin for UpgradeMonitor
impl UnsafeUnpin for UpgradeMonitor
impl !UnwindSafe for UpgradeMonitor
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
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more