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
impl Runtime
Sourcepub fn builder() -> RuntimeBuilder
pub fn builder() -> RuntimeBuilder
Create a new RuntimeBuilder.
Sourcepub fn function_declarations(
&self,
) -> impl Iterator<Item = &FunctionDeclaration>
pub fn function_declarations( &self, ) -> impl Iterator<Item = &FunctionDeclaration>
Returns the signatures of all functions available to the runtime.
Sourcepub fn function_declaration(
&self,
name: FunctionName,
) -> Option<&FunctionDeclaration>
pub fn function_declaration( &self, name: FunctionName, ) -> Option<&FunctionDeclaration>
Returns the signature for a function.
Sourcepub fn signature(&self) -> Signature
pub fn signature(&self) -> Signature
Lists all the functions known to this runtime; equivalent to Self::signature_in_loc with Location::local
Sourcepub async fn signature_in_loc(
&self,
loc: Location,
) -> Result<ListFunctionsResponse>
pub async fn signature_in_loc( &self, loc: Location, ) -> Result<ListFunctionsResponse>
Lists the functions known in a specified location (and sub-locations thereof).
Sourcepub fn infer_type<T>(
&self,
to_check: &T,
) -> Result<(TypeScheme, T::Annotated), TypeErrors>where
T: Typeable,
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.
Sourcepub async fn infer_type_in_loc(
&self,
to_check: Value,
location: Location,
) -> Result<InferTypeResponse>
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
locationdoes not identify a worker able to type-check graphs - Any type error in
to_check, for example, using functions not available atlocation.
Sourcepub 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>
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.
Sourcepub async fn execute_graph_cb(
&self,
graph: Graph,
inputs: HashMap<Label, Value>,
type_check: bool,
callback: Callback,
escape: EscapeHatch,
) -> Result<HashMap<Label, Value>, RunGraphError>
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).
Sourcepub fn start_graph(
&self,
graph: Graph,
inputs: HashMap<Label, Value>,
type_check: bool,
callback: Callback,
escape: EscapeHatch,
checkpoint_client: Option<CheckpointClient>,
) -> Result<TaskHandle, TypeErrors>
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
Sourcepub fn run_function_with_loc(
&self,
function: &FunctionName,
loc: &Location,
) -> Option<RuntimeOperation>
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.
Sourcepub fn run_graph_remote(
&self,
graph: Graph,
loc: (LocationName, Location),
) -> Option<RuntimeOperation>
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§
Auto Trait Implementations§
impl Freeze for Runtime
impl !RefUnwindSafe for Runtime
impl Send for Runtime
impl Sync for Runtime
impl Unpin for Runtime
impl UnsafeUnpin for Runtime
impl !UnwindSafe for Runtime
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> 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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request