Skip to main content

Runtime

Struct Runtime 

Source
pub struct Runtime { /* private fields */ }
Expand description

Runtime system that manages all resources necessary to run graphs.

The runtime system manages a collection of Workers and routes requests to run nodes to the appropriate workers depending on which functions they support.

This struct can be efficiently cloned to be passed around and cleans up its resources after the last copy has been dropped.

Implementations§

Source§

impl Runtime

Source

pub fn builder() -> RuntimeBuilder

Create a new RuntimeBuilder.

Source

pub fn function_declarations( &self, ) -> impl Iterator<Item = &FunctionDeclaration>

Returns the signatures of all functions available to the runtime.

Source

pub fn function_declaration( &self, name: FunctionName, ) -> Option<&FunctionDeclaration>

Returns the signature for a function.

Source

pub fn signature(&self) -> Signature

Lists all the functions known to this runtime; equivalent to Self::signature_in_loc with Location::local

Source

pub async fn signature_in_loc( &self, loc: Location, ) -> Result<ListFunctionsResponse>

Lists the functions known in a specified location (and sub-locations thereof).

Source

pub fn infer_type<T>( &self, to_check: &T, ) -> Result<(TypeScheme, T::Annotated), TypeErrors>
where T: Typeable,

Infer the type of a graph or value using the signature provided by the runtime’s workers.

§Errors

Returns an error in case the type inference fails.

Source

pub async fn infer_type_in_loc( &self, to_check: Value, location: Location, ) -> Result<InferTypeResponse>

Infers the type that a Value would have if it were seen in a particular location, i.e. a descendant RuntimeWorker (able to run Graphs).

§Errors
  • If location does not identify a worker able to type-check graphs
  • Any type error in to_check, for example, using functions not available at location.
Source

pub async fn execute_graph_remote( &self, graph: Graph, inputs: HashMap<Label, Value>, type_check: bool, remote_loc: (LocationName, Location), escape: Callback, ) -> Result<HashMap<Label, Value>, RunGraphError>

Run a graph to completion with a given collection of inputs, at a non-local Location.

Source

pub async fn execute_graph_cb( &self, graph: Graph, inputs: HashMap<Label, Value>, type_check: bool, callback: Callback, escape: EscapeHatch, ) -> Result<HashMap<Label, Value>, RunGraphError>

Run a graph to completion with a given collection of inputs, locally, optionally after type-checking.

callback should be a connection-point (for child workers) to connect to this runtime.

escape may be a forwarding chain to the root of a chain of servers, but note that if type_check is true, then we will never need to escape above this server (as successful type-checking guarantees the graph uses only functions known to this server).

Source

pub fn start_graph( &self, graph: Graph, inputs: HashMap<Label, Value>, type_check: bool, callback: Callback, escape: EscapeHatch, checkpoint_client: Option<CheckpointClient>, ) -> Result<TaskHandle, TypeErrors>

Starts running a graph (locally, on this Runtime), optionally type-checking the graph and inputs first.

If type-checking succeeds (or is not requested), returns a handle to the graph-executing process which will continue in the background.

See execute_graph_cb for more detail on callback + escape

Source

pub fn run_function_with_loc( &self, function: &FunctionName, loc: &Location, ) -> Option<RuntimeOperation>

Runs a function at a specific location (local or otherwise). If the location is non-local, will definitely return Some RuntimeOperation (one that fails when run if the indicated remote can’t run the function). If the location is local, may return None if the function name is not known.

Source

pub fn run_graph_remote( &self, graph: Graph, loc: (LocationName, Location), ) -> Option<RuntimeOperation>

Runs a graph in a runtime that is a strict descendant of this one. (A non-local Location with at least one LocationName.)

Trait Implementations§

Source§

impl Clone for Runtime

Source§

fn clone(&self) -> Runtime

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Runtime

Source§

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

Formats the value using the given formatter. 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
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<T> FutureExt for T

Source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
Source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
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> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> TryFrom<T> for T

Source§

type Error = Infallible

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

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

Performs the conversion.
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<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