pub struct RefreshScheduler { /* private fields */ }Expand description
Manages background refresh tasks for dynamic sources.
The scheduler spawns per-source tasks based on their refresh policy and
sends RefreshResult notifications whenever source data changes.
Implementations§
Source§impl RefreshScheduler
impl RefreshScheduler
Sourcepub fn trigger_sender(&self) -> Sender<RefreshTrigger>
pub fn trigger_sender(&self) -> Sender<RefreshTrigger>
Get a sender for triggering on-demand resolution.
Sourcepub fn result_receiver(&self) -> Receiver<Option<RefreshResult>>
pub fn result_receiver(&self) -> Receiver<Option<RefreshResult>>
Get a receiver that is notified when sources are refreshed.
Sourcepub fn subscribe(
self,
sources: Vec<DynamicSource>,
resolver: Arc<dyn SourceResolver>,
) -> SourceSubscription
pub fn subscribe( self, sources: Vec<DynamicSource>, resolver: Arc<dyn SourceResolver>, ) -> SourceSubscription
Start the scheduler for a detached, non-pipeline consumer.
Returns a SourceSubscription bundling the spawned coordination task,
a watch receiver of decoded source payloads, and a trigger sender for
on-demand re-resolution. This is the seam used by consumers that want a
source’s decoded payload directly (rather than bound into a pipeline
${source.*} namespace): it reuses the same per-source file, HTTP, and
NATS fetch and refresh machinery as the pipeline binder via Self::run,
so that logic is never duplicated.
Sourcepub fn run(
self,
sources: Vec<DynamicSource>,
resolver: Arc<dyn SourceResolver>,
) -> JoinHandle<()>
pub fn run( self, sources: Vec<DynamicSource>, resolver: Arc<dyn SourceResolver>, ) -> JoinHandle<()>
Start the scheduler background loop.
Takes ownership of the trigger receiver and spawns per-source interval tasks.
Returns a JoinHandle for the main coordination task.
When a refresh occurs (via interval timer or on-demand trigger), all sources are re-resolved and the result is published on the watch channel.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for RefreshScheduler
impl RefUnwindSafe for RefreshScheduler
impl Send for RefreshScheduler
impl Sync for RefreshScheduler
impl Unpin for RefreshScheduler
impl UnsafeUnpin for RefreshScheduler
impl UnwindSafe for RefreshScheduler
Blanket Implementations§
Source§impl<T> AnyExt for T
impl<T> AnyExt for T
Source§fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
T behind referenceSource§fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
T behind mutable referenceSource§fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
T behind Rc pointerSource§fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
T behind Arc pointerSource§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, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
fn coerce_rc_to(self: Rc<X>) -> Rc<T>
fn coerce_box_to(self: Box<X>) -> Box<T>
fn coerce_ref_to(&self) -> &T
fn coerce_mut_to(&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