Deploy

Trait Deploy 

Source
pub trait Deploy<'a> {
    type InstantiateEnv;
    type CompileEnv;
    type Process: Node<Meta = Self::Meta, InstantiateEnv = Self::InstantiateEnv> + Clone;
    type Cluster: Node<Meta = Self::Meta, InstantiateEnv = Self::InstantiateEnv> + Clone;
    type External: Node<Meta = Self::Meta, InstantiateEnv = Self::InstantiateEnv> + RegisterPort<'a, Self>;
    type Port: Clone;
    type ExternalRawPort;
    type Meta: Default;
    type GraphId;

Show 23 methods // Required methods fn allocate_process_port(process: &Self::Process) -> Self::Port; fn allocate_cluster_port(cluster: &Self::Cluster) -> Self::Port; fn allocate_external_port(external: &Self::External) -> Self::Port; fn o2o_sink_source( compile_env: &Self::CompileEnv, p1: &Self::Process, p1_port: &Self::Port, p2: &Self::Process, p2_port: &Self::Port, ) -> (Expr, Expr); fn o2o_connect( p1: &Self::Process, p1_port: &Self::Port, p2: &Self::Process, p2_port: &Self::Port, ) -> Box<dyn FnOnce()>; fn o2m_sink_source( compile_env: &Self::CompileEnv, p1: &Self::Process, p1_port: &Self::Port, c2: &Self::Cluster, c2_port: &Self::Port, ) -> (Expr, Expr); fn o2m_connect( p1: &Self::Process, p1_port: &Self::Port, c2: &Self::Cluster, c2_port: &Self::Port, ) -> Box<dyn FnOnce()>; fn m2o_sink_source( compile_env: &Self::CompileEnv, c1: &Self::Cluster, c1_port: &Self::Port, p2: &Self::Process, p2_port: &Self::Port, ) -> (Expr, Expr); fn m2o_connect( c1: &Self::Cluster, c1_port: &Self::Port, p2: &Self::Process, p2_port: &Self::Port, ) -> Box<dyn FnOnce()>; fn m2m_sink_source( compile_env: &Self::CompileEnv, c1: &Self::Cluster, c1_port: &Self::Port, c2: &Self::Cluster, c2_port: &Self::Port, ) -> (Expr, Expr); fn m2m_connect( c1: &Self::Cluster, c1_port: &Self::Port, c2: &Self::Cluster, c2_port: &Self::Port, ) -> Box<dyn FnOnce()>; fn e2o_many_source( compile_env: &Self::CompileEnv, extra_stmts: &mut Vec<Stmt>, p2: &Self::Process, p2_port: &Self::Port, codec_type: &Type, shared_handle: String, ) -> Expr; fn e2o_many_sink(shared_handle: String) -> Expr; fn e2o_source( compile_env: &Self::CompileEnv, p1: &Self::External, p1_port: &Self::Port, p2: &Self::Process, p2_port: &Self::Port, ) -> Expr; fn e2o_connect( p1: &Self::External, p1_port: &Self::Port, p2: &Self::Process, p2_port: &Self::Port, many: bool, server_hint: NetworkHint, ) -> Box<dyn FnOnce()>; fn o2e_sink( compile_env: &Self::CompileEnv, p1: &Self::Process, p1_port: &Self::Port, p2: &Self::External, p2_port: &Self::Port, ) -> Expr; fn o2e_connect( p1: &Self::Process, p1_port: &Self::Port, p2: &Self::External, p2_port: &Self::Port, ) -> Box<dyn FnOnce()>; fn cluster_ids( env: &Self::CompileEnv, of_cluster: usize, ) -> impl QuotedWithContext<'a, &'a [u32], ()> + Copy + 'a; fn cluster_self_id( env: &Self::CompileEnv, ) -> impl QuotedWithContext<'a, u32, ()> + Copy + 'a; // Provided methods fn has_trivial_node() -> bool { ... } fn trivial_process(_id: usize) -> Self::Process { ... } fn trivial_cluster(_id: usize) -> Self::Cluster { ... } fn trivial_external(_id: usize) -> Self::External { ... }
}
Available on crate feature build only.

Required Associated Types§

Source

type InstantiateEnv

Source

type CompileEnv

Source

type Process: Node<Meta = Self::Meta, InstantiateEnv = Self::InstantiateEnv> + Clone

Source

type Cluster: Node<Meta = Self::Meta, InstantiateEnv = Self::InstantiateEnv> + Clone

Source

type External: Node<Meta = Self::Meta, InstantiateEnv = Self::InstantiateEnv> + RegisterPort<'a, Self>

Source

type Port: Clone

Source

type ExternalRawPort

Source

type Meta: Default

Source

type GraphId

Type of ID used to switch between different subgraphs at runtime.

Required Methods§

Source

fn allocate_process_port(process: &Self::Process) -> Self::Port

Source

fn allocate_cluster_port(cluster: &Self::Cluster) -> Self::Port

Source

fn allocate_external_port(external: &Self::External) -> Self::Port

Source

fn o2o_sink_source( compile_env: &Self::CompileEnv, p1: &Self::Process, p1_port: &Self::Port, p2: &Self::Process, p2_port: &Self::Port, ) -> (Expr, Expr)

Source

fn o2o_connect( p1: &Self::Process, p1_port: &Self::Port, p2: &Self::Process, p2_port: &Self::Port, ) -> Box<dyn FnOnce()>

Source

fn o2m_sink_source( compile_env: &Self::CompileEnv, p1: &Self::Process, p1_port: &Self::Port, c2: &Self::Cluster, c2_port: &Self::Port, ) -> (Expr, Expr)

Source

fn o2m_connect( p1: &Self::Process, p1_port: &Self::Port, c2: &Self::Cluster, c2_port: &Self::Port, ) -> Box<dyn FnOnce()>

Source

fn m2o_sink_source( compile_env: &Self::CompileEnv, c1: &Self::Cluster, c1_port: &Self::Port, p2: &Self::Process, p2_port: &Self::Port, ) -> (Expr, Expr)

Source

fn m2o_connect( c1: &Self::Cluster, c1_port: &Self::Port, p2: &Self::Process, p2_port: &Self::Port, ) -> Box<dyn FnOnce()>

Source

fn m2m_sink_source( compile_env: &Self::CompileEnv, c1: &Self::Cluster, c1_port: &Self::Port, c2: &Self::Cluster, c2_port: &Self::Port, ) -> (Expr, Expr)

Source

fn m2m_connect( c1: &Self::Cluster, c1_port: &Self::Port, c2: &Self::Cluster, c2_port: &Self::Port, ) -> Box<dyn FnOnce()>

Source

fn e2o_many_source( compile_env: &Self::CompileEnv, extra_stmts: &mut Vec<Stmt>, p2: &Self::Process, p2_port: &Self::Port, codec_type: &Type, shared_handle: String, ) -> Expr

Source

fn e2o_many_sink(shared_handle: String) -> Expr

Source

fn e2o_source( compile_env: &Self::CompileEnv, p1: &Self::External, p1_port: &Self::Port, p2: &Self::Process, p2_port: &Self::Port, ) -> Expr

Source

fn e2o_connect( p1: &Self::External, p1_port: &Self::Port, p2: &Self::Process, p2_port: &Self::Port, many: bool, server_hint: NetworkHint, ) -> Box<dyn FnOnce()>

Source

fn o2e_sink( compile_env: &Self::CompileEnv, p1: &Self::Process, p1_port: &Self::Port, p2: &Self::External, p2_port: &Self::Port, ) -> Expr

Source

fn o2e_connect( p1: &Self::Process, p1_port: &Self::Port, p2: &Self::External, p2_port: &Self::Port, ) -> Box<dyn FnOnce()>

Source

fn cluster_ids( env: &Self::CompileEnv, of_cluster: usize, ) -> impl QuotedWithContext<'a, &'a [u32], ()> + Copy + 'a

Source

fn cluster_self_id( env: &Self::CompileEnv, ) -> impl QuotedWithContext<'a, u32, ()> + Copy + 'a

Provided Methods§

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl<'a> Deploy<'a> for HydroDeploy

Available on crate feature deploy only.