pub struct DynamicProfileManager {
pub update_rx: UnboundedReceiver<DynamicProfileUpdate>,
pub statuses: HashMap<String, SourceStatus>,
/* private fields */
}Expand description
Manages background fetching of dynamic profiles
Spawns tokio tasks that periodically fetch profiles from remote URLs and sends updates via an mpsc channel for the main thread to process.
Fields§
§update_rx: UnboundedReceiver<DynamicProfileUpdate>Channel receiver for updates from background tasks
statuses: HashMap<String, SourceStatus>Status of each source, keyed by URL
Implementations§
Source§impl DynamicProfileManager
impl DynamicProfileManager
Sourcepub fn start(
&mut self,
sources: &[DynamicProfileSource],
runtime: &Arc<Runtime>,
)
pub fn start( &mut self, sources: &[DynamicProfileSource], runtime: &Arc<Runtime>, )
Start background fetch tasks for all enabled sources.
Stops any existing tasks first. For each enabled source:
- Initializes the source status
- Loads cached profiles and sends them via the channel immediately
- Spawns a tokio task that does an initial fetch, then periodic refreshes
Sourcepub fn refresh_all(
&mut self,
sources: &[DynamicProfileSource],
runtime: &Arc<Runtime>,
)
pub fn refresh_all( &mut self, sources: &[DynamicProfileSource], runtime: &Arc<Runtime>, )
Trigger an immediate refresh of all enabled sources
Sourcepub fn refresh_source(
&mut self,
source: &DynamicProfileSource,
runtime: &Arc<Runtime>,
)
pub fn refresh_source( &mut self, source: &DynamicProfileSource, runtime: &Arc<Runtime>, )
Trigger an immediate refresh of a specific source
Sourcepub fn try_recv(&mut self) -> Option<DynamicProfileUpdate>
pub fn try_recv(&mut self) -> Option<DynamicProfileUpdate>
Check for pending updates (non-blocking)
Sourcepub fn update_status(&mut self, update: &DynamicProfileUpdate)
pub fn update_status(&mut self, update: &DynamicProfileUpdate)
Update source status after receiving an update
Trait Implementations§
Source§impl Default for DynamicProfileManager
impl Default for DynamicProfileManager
Auto Trait Implementations§
impl Freeze for DynamicProfileManager
impl RefUnwindSafe for DynamicProfileManager
impl Send for DynamicProfileManager
impl Sync for DynamicProfileManager
impl Unpin for DynamicProfileManager
impl UnsafeUnpin for DynamicProfileManager
impl UnwindSafe for DynamicProfileManager
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
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
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>
Converts
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>
Converts
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 moreSource§impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
fn into_sample(self) -> T
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
Read this value from the supplied reader. Same as
ReadEndian::read_from_little_endian().