Enum Parallel

Source
pub enum Parallel {
    Opening {
        id: String,
        job_channel: Sender<Message>,
        position: usize,
    },
    Closing {
        id: String,
        job_channel: Sender<Message>,
        position: usize,
        dependencies: AtomicUsize,
        dependencies_met: AtomicUsize,
    },
}
Expand description

Parallel node concrete type

Contains two variants, Opening and Closing, this is because each one behaves in a different way when run. The Closing variant of a parallel must hold execution until all pointers into it have been resolved whereas an Opening variant does nothing.

Variants§

§

Opening

No special behaviour required for Opening, simply completes with no bespoke behaviour

Fields

§job_channel: Sender<Message>
§position: usize
§

Closing

Keeps track of how many times it is pointed to and how many times it has been run. We can only proceed once it has been run as many times as it has pointers to it. The dependencies_met count is reset every time the node completes, this is in case we loop back to this node

Fields

§job_channel: Sender<Message>
§position: usize
§dependencies: AtomicUsize

How many times it is pointed to

§dependencies_met: AtomicUsize

How many times it has been run

Trait Implementations§

Source§

impl Debug for Parallel

Source§

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

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

impl Node for Parallel

Source§

fn kind(&self) -> WorkflowNodeType

Return the type of node, this is used for easily locating the Start and End nodes
Source§

fn id(&self) -> &str

The current node ID, used by the Job struct to know the current node
Source§

fn position(&self) -> usize

A pointer to the current nodes position in the Job.nodes collection
Source§

fn run<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<(), NodeError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

The publicly exposed API for running a node
Source§

fn execute<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<Vec<Parameter>, NodeError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

The instructions for how to execute each node
Source§

fn create_msg<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Message> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Create message to be sent to the executor once the node has been executed

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

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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

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

Source§

fn vzip(self) -> V