pub struct CronScheduler {
handles: Mutex<HashMap<String, AbortHandle>>,
shared_store: Option<Arc<Store>>,
http_client: Client,
local_url: String,
auth_key: String,
broker: Arc<Broker>,
delivery: OnceLock<Arc<dyn Fn(InjectionRequest, String) -> Pin<Box<dyn Future<Output = Value> + Send>> + Send + Sync>>,
}Fields§
§handles: Mutex<HashMap<String, AbortHandle>>§http_client: Client§local_url: String§auth_key: String§broker: Arc<Broker>§delivery: OnceLock<Arc<dyn Fn(InjectionRequest, String) -> Pin<Box<dyn Future<Output = Value> + Send>> + Send + Sync>>Implementations§
Source§impl CronScheduler
impl CronScheduler
pub fn new( shared_store: Option<Arc<Store>>, http_client: Client, local_url: String, auth_key: String, broker: Arc<Broker>, ) -> Arc<Self> ⓘ
Sourcepub fn install_delivery(
&self,
delivery: Arc<dyn Fn(InjectionRequest, String) -> Pin<Box<dyn Future<Output = Value> + Send>> + Send + Sync>,
)
pub fn install_delivery( &self, delivery: Arc<dyn Fn(InjectionRequest, String) -> Pin<Box<dyn Future<Output = Value> + Send>> + Send + Sync>, )
Deliver fires in process from now on (see FireDelivery). Once;
a second install is ignored.
fn publish_changed(&self)
Sourcepub async fn start(self: &Arc<Self>)
pub async fn start(self: &Arc<Self>)
Load all enabled jobs from the DB and schedule them. Call once at startup.
Sourcepub fn schedule_job(self: &Arc<Self>, job: &CronJob)
pub fn schedule_job(self: &Arc<Self>, job: &CronJob)
Schedule a single job (or reschedule it after a DB change). Replaces
any existing task for the same job.id. Call sites that don’t need to
account for a simultaneous catch-up fire should pass job.fire_count.
fn schedule_job_with_fires(self: &Arc<Self>, job: &CronJob, initial_fires: i64)
Sourcepub fn cancel_job(&self, id: &str)
pub fn cancel_job(&self, id: &str)
Stop (abort) a job’s scheduled task without removing it from the DB.
Sourcefn disable_job(&self, job_id: &str, reason: &str)
fn disable_job(&self, job_id: &str, reason: &str)
Disable a job in the DB (audit trail preserved, unlike delete), drop its live task handle, and notify listeners. Shared by every self-disabling reason a scheduled job’s own loop hits (max_fires, max_age_secs) — extracted so those call sites don’t each repeat the same three-step disable sequence.
Sourcepub(crate) async fn fire(
&self,
id: &str,
prompt: &str,
target: &str,
target_uid: &str,
created_by_uid: &str,
)
pub(crate) async fn fire( &self, id: &str, prompt: &str, target: &str, target_uid: &str, created_by_uid: &str, )
Fire a cron job: deliver the prompt and record the fire in DB.
Identity M3 (spec §5.4): a job that captured its target’s UID at creation fires BY UID — a job firing at 03:00 must never resolve a name. A job with no UID (created before M3, or by a caller that did not carry one) fires by name as before, counted.
Identity M4c-3 (§6.5.9): delivered in process (FireDelivery), with
the creator’s UID as attribution on this instance only — a forwarded
hop never carries it. The sender name stays "cron": showing the
creator’s name unsigned would make every fire of an agent-created job
look forged (its key is on file under that name) and echo each fire
into the creator’s pane. A job with no captured creator UID fires as
before, counted.
Auto Trait Implementations§
impl !Freeze for CronScheduler
impl !RefUnwindSafe for CronScheduler
impl !UnwindSafe for CronScheduler
impl Send for CronScheduler
impl Sync for CronScheduler
impl Unpin for CronScheduler
impl UnsafeUnpin for CronScheduler
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
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> 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