Skip to main content

Hub

Struct Hub 

Source
pub struct Hub {
    pub issuer: Arc<Issuer>,
    /* private fields */
}
Expand description

The host’s jobs and the page’s event stream.

Fields§

§issuer: Arc<Issuer>

Signs the person’s own commands this host sends, and checks them.

Implementations§

Source§

impl Hub

Source

pub fn new(root: Root, issuer: Arc<Issuer>) -> Arc<Self> ⓘ

A hub for the project root is (or will be, once bound), signing with issuer.

Source

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

Every event from now on, as JSON text.

Source

pub fn progress(self: &Arc<Self>) -> Arc<dyn Progress> ⓘ

A progress sink onto the page’s event stream, for work that is not a job (an Ask turn).

Source

pub fn job(&self) -> Option<JobView>

The job, if one ran since the host started.

Source

pub fn waiting(&self) -> Option<Value>

What waits for the person now (an ask or question event).

Source

pub fn answer(&self, id: u64, reply: Reply) -> Result<(), String>

Answers what waits; Err when nothing does, or something else does.

Source

pub fn stop(&self)

Asks the running job to stop before its next task; a call waiting for the person is answered with “stop” (it keeps waiting, resumably).

Source

pub fn exclusive<T>(&self, f: impl FnOnce() -> T) -> Result<T, String>

Runs f while no job runs and none can start — for a short change to the checkout (a commit): the check and the change are one step.

§Errors

A job is working.

Source

pub fn start( self: &Arc<Self>, run: Runnable, input: Option<String>, feature: Option<String>, command: String, root: PathBuf, ) -> Result<u64, String>

Starts run (with input for actions that take one) for feature, in root (the bound project’s, or a folder of a host not bound yet); Err when a job is already working.

Source

pub fn start_fix( self: &Arc<Self>, argvs: Vec<Vec<String>>, root: PathBuf, ) -> Result<u64, String>

Runs the person’s own command — argvs this host issued, checked by the caller — in root, as a job: its output lines go to the page (output events), Stop ends it, and it ends in its result.

Source

pub fn start_speccoder( self: &Arc<Self>, args: Vec<String>, root: PathBuf, ) -> Result<u64, String>

Runs one of speccoder’s own commands that has no action of its own (speccoder run --ignore-checklists) — args issued by this host, checked by the caller — as a job of speccoder’s: no time limit, Stop asks it to stop, its run shows as any run does (the project’s live state), and its own result is the job’s.

Trait Implementations§

Source§

impl Debug for Hub

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl !Freeze for Hub

§

impl Forget for Hub

§

impl Move for Hub

§

impl RefUnwindSafe for Hub

§

impl Send for Hub

§

impl Sync for Hub

§

impl Unpin for Hub

§

impl UnsafeUnpin for Hub

§

impl UnwindSafe for Hub

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

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

Source§

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.

Source§

impl<T> Instrument for T

Source§

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

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

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

impl<T> IntoMaybeUndefined<T> for T

Source§

fn into_maybe_undefined(self) -> MaybeUndefined<T>

Converts this value into a three-state builder argument.
Source§

impl<T> IntoOption<T> for T

Source§

fn into_option(self) -> Option<T>

Converts this value into an optional builder argument.
Source§

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

Source§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

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

Initializes a with the given initializer. Read more
Source§

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

Dereferences the given pointer. Read more
Source§

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

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

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

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

Source§

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

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

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

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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

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

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

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

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

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