Skip to main content

OperationDeclaration

Trait OperationDeclaration 

Source
pub trait OperationDeclaration: 'static {
    type Request: Portable;
    type Response: Portable;
    type Input: Direction;
    type Output: Direction;

    const ID: &'static str;
    const POLICY: OperationPolicy;
    const DESCRIPTION: &'static str = "";
    const VISIBILITY: Visibility = Visibility::Private;
    const REPLAY: ReplaySafety = ReplaySafety::Unknown;
    const GRPC: Option<Grpc> = None;
    const OPERATIONS: &'static [WireDeclaration] = _;

    // Provided methods
    fn definition() -> OperationDefinition { ... }
    fn grant(_request: &Self::Request) -> Option<Grant> { ... }
    fn key(_request: &Self::Request) -> Option<CacheKey> { ... }
}

Required Associated Constants§

Provided Associated Constants§

Source

const DESCRIPTION: &'static str = ""

Source

const VISIBILITY: Visibility = Visibility::Private

Source

const REPLAY: ReplaySafety = ReplaySafety::Unknown

Source

const GRPC: Option<Grpc> = None

Source

const OPERATIONS: &'static [WireDeclaration] = _

Required Associated Types§

Provided Methods§

Source

fn definition() -> OperationDefinition

Source

fn grant(_request: &Self::Request) -> Option<Grant>

Source

fn key(_request: &Self::Request) -> Option<CacheKey>

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl OperationDeclaration for Control

Source§

const ID: &'static str = "harmos_observe"

Source§

const POLICY: OperationPolicy = POLICY

Source§

const VISIBILITY: Visibility = Visibility::Host

Source§

const REPLAY: ReplaySafety = ReplaySafety::Idempotent

Source§

type Request = ControlRequest

Source§

type Response = ()

Source§

type Input = NoStream

Source§

type Output = NoStream

Source§

impl<L> OperationDeclaration for Callback<L>
where L: Listener,

Source§

const ID: &'static str = L::CALLBACK

Source§

const POLICY: OperationPolicy = L::POLICY

Source§

const VISIBILITY: Visibility = crate::operations::Visibility::Shared

Source§

type Request = Delivery<L>

Source§

type Response = ()

Source§

type Input = NoStream

Source§

type Output = NoStream