Skip to main content

JobRegistry

Struct JobRegistry 

Source
pub struct JobRegistry {
    next_id: AtomicU64,
    jobs: Mutex<BTreeMap<u64, JobRecord>>,
    updates: Sender<JobStatus>,
}
Expand description

State of the jobs of a session.

Fields§

§next_id: AtomicU64

ID of the next job.

§jobs: Mutex<BTreeMap<u64, JobRecord>>

State of each job, by ID.

§updates: Sender<JobStatus>

Channel every job change is sent to.

Implementations§

Source§

impl JobRegistry

Source

pub fn has_unfinished_jobs(&self) -> bool

Returns if any job is queued or running.

Source

pub fn create(&self, method: &str) -> u64

Registers a new queued job.

§Returns

The ID of the job.

Source

pub fn start(&self, job: u64) -> bool

Marks a queued job as running.

§Returns

false if the job was cancelled or is unknown, so it must not run.

Source

pub fn set_stage(&self, job: u64, stage: &str)

Sets the step a running job is on.

Source

pub fn set_progress(&self, job: u64, progress: u8)

Sets how far along a running job is, from 0 to 100.

Only increases are kept, as parallel steps of a job may report their progress out of order.

Source

pub fn requeue(&self, job: u64) -> bool

Moves a running job back to the queue.

§Returns

false if the job isn’t running.

Source

pub fn finish_cancelled(&self, job: u64)

Ends a job as cancelled, even if it already started.

Source

pub fn finish(&self, job: u64, outcome: RpcOutcome)

Ends a job with the outcome of its method.

Source

pub fn cancel(&self, job: u64) -> Result<JobStatus, ApiError>

Cancels a job that hasn’t started yet.

§Errors

Fails if the job is unknown, or if it already started.

Source

pub fn status(&self, job: u64) -> Option<JobStatus>

Returns the state of a job, or None if it’s unknown.

Source

pub fn record(&self, job: u64) -> Option<JobRecord>

Returns the state of a job with when it was created and last changed, or None if it’s unknown.

Source

pub fn subscribe(&self) -> Receiver<JobStatus>

Returns a receiver of every job change from now on.

Source

pub async fn wait(&self, job: u64, timeout: Duration) -> Option<JobStatus>

Waits for a job to end, up to timeout.

§Returns

The state of the job when it ended, or when the wait timed out. None if the job is unknown.

Source

fn transition( &self, job: u64, change: impl FnOnce(&JobState) -> Option<JobState>, ) -> Option<JobStatus>

Changes the state of a job with change, which returns the new state, or None to keep the current one.

§Returns

The new state of the job, or None if it’s unknown or didn’t change.

Source

fn set(&self, status: JobStatus)

Stores the state of a job, forgetting the oldest ended jobs over MAX_ENDED_JOBS, and notifies it.

Source

fn notify(&self, status: JobStatus)

Sends a job change to the listeners, if there are any.

Trait Implementations§

Source§

impl Debug for JobRegistry

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for JobRegistry

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

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 more
§

impl<T> MaybeSend for T

§

impl<T> MaybeSync for T

§

impl<T> NoneValue for T
where T: Default,

§

type NoneType = T

§

fn null_value() -> T

The none-equivalent value.
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<R, P> ReadPrimitive<R> for P
where R: Read + ReadEndian<P>, P: Default,

Source§

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().
Source§

fn read_from_big_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_big_endian().
Source§

fn read_from_native_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_native_endian().
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more