pub struct PeerMigrationManager { /* private fields */ }Expand description
Manages peer state migrations for seamless node handoff.
Implementations§
Source§impl PeerMigrationManager
impl PeerMigrationManager
Sourcepub fn new(config: PeerMigrationConfig) -> Self
pub fn new(config: PeerMigrationConfig) -> Self
Create a new migration manager with the given configuration.
Sourcepub fn start_migration(
&mut self,
source: &str,
target: &str,
total_items: u64,
) -> Result<u64, String>
pub fn start_migration( &mut self, source: &str, target: &str, total_items: u64, ) -> Result<u64, String>
Start a new migration from source to target.
Returns the migration ID on success, or an error if the concurrent migration limit has been reached or the parameters are invalid.
Sourcepub fn add_items(
&mut self,
migration_id: u64,
new_items: Vec<MigrationItem>,
) -> Result<(), String>
pub fn add_items( &mut self, migration_id: u64, new_items: Vec<MigrationItem>, ) -> Result<(), String>
Add items to an active migration.
The migration must be in the Transferring state. Each item’s bytes
are counted toward the transfer total.
Sourcepub fn advance_state(
&mut self,
migration_id: u64,
) -> Result<PeerMigrationState, String>
pub fn advance_state( &mut self, migration_id: u64, ) -> Result<PeerMigrationState, String>
Advance the migration to its next state.
State transitions follow:
Preparing -> Transferring -> Verifying -> Completed
The Verifying -> Completed transition only succeeds if all items
have been transferred (when verify_after_transfer is enabled).
Sourcepub fn complete_migration(
&mut self,
migration_id: u64,
checksum: u64,
) -> Result<(), String>
pub fn complete_migration( &mut self, migration_id: u64, checksum: u64, ) -> Result<(), String>
Mark a migration as completed with a final checksum.
The migration must be in the Verifying state. If verify_after_transfer
is enabled, the provided checksum is compared against the computed one.
Sourcepub fn fail_migration(
&mut self,
migration_id: u64,
reason: &str,
) -> Result<(), String>
pub fn fail_migration( &mut self, migration_id: u64, reason: &str, ) -> Result<(), String>
Mark a migration as failed with the given reason.
Sourcepub fn get_migration(&self, migration_id: u64) -> Option<&PeerMigrationRecord>
pub fn get_migration(&self, migration_id: u64) -> Option<&PeerMigrationRecord>
Get a reference to a migration record by ID.
Searches both active and completed migrations.
Sourcepub fn progress(&self, migration_id: u64) -> Option<f64>
pub fn progress(&self, migration_id: u64) -> Option<f64>
Get the progress of a migration as a value between 0.0 and 1.0.
Returns None if the migration does not exist.
Sourcepub fn active_count(&self) -> usize
pub fn active_count(&self) -> usize
Return the number of currently active (non-completed, non-failed) migrations.
Sourcepub fn cleanup_completed(&mut self, before: u64) -> usize
pub fn cleanup_completed(&mut self, before: u64) -> usize
Remove completed/failed migrations with completed_at before the given timestamp.
Returns the number of records removed.
Sourcepub fn stats(&self) -> &PeerMigrationStats
pub fn stats(&self) -> &PeerMigrationStats
Get a reference to the aggregate migration statistics.
Sourcepub fn migrations_for_peer(&self, peer: &str) -> Vec<&PeerMigrationRecord>
pub fn migrations_for_peer(&self, peer: &str) -> Vec<&PeerMigrationRecord>
Find all migrations (active and completed) involving a given peer, either as source or target.
Sourcepub fn config(&self) -> &PeerMigrationConfig
pub fn config(&self) -> &PeerMigrationConfig
Get the configuration of this manager.
Sourcepub fn get_items(&self, migration_id: u64) -> Option<&[MigrationItem]>
pub fn get_items(&self, migration_id: u64) -> Option<&[MigrationItem]>
Get the stored items for a migration (if still active).
Auto Trait Implementations§
impl Freeze for PeerMigrationManager
impl RefUnwindSafe for PeerMigrationManager
impl Send for PeerMigrationManager
impl Sync for PeerMigrationManager
impl Unpin for PeerMigrationManager
impl UnsafeUnpin for PeerMigrationManager
impl UnwindSafe for PeerMigrationManager
Blanket Implementations§
impl<T> Allocation for T
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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