Skip to main content

Executor

Trait Executor 

Source
pub trait Executor:
    Send
    + Sync
    + 'static {
    // Required method
    fn execute_method<'life0, 'life1, 'async_trait>(
        &'life0 self,
        method: &'life1 str,
        payload: Bytes,
    ) -> Pin<Box<dyn Future<Output = Result<Bytes>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait;

    // Provided methods
    fn execute<'life0, 'async_trait>(
        &'life0 self,
        payload: Bytes,
    ) -> Pin<Box<dyn Future<Output = Result<Bytes>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait { ... }
    fn execute_value<'life0, 'life1, 'async_trait>(
        &'life0 self,
        method: &'life1 str,
        payload: Value,
    ) -> Pin<Box<dyn Future<Output = Result<Value>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait { ... }
    fn execute_value_traced<'life0, 'life1, 'async_trait>(
        &'life0 self,
        method: &'life1 str,
        payload: Value,
    ) -> Pin<Box<dyn Future<Output = Result<(Value, Arc<str>)>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait { ... }
}
Expand description

Sends a serialized payload to a PHP worker and returns the response.

Plugins call this; they never see the worker pool directly.

Required Methods§

Source

fn execute_method<'life0, 'life1, 'async_trait>( &'life0 self, method: &'life1 str, payload: Bytes, ) -> Pin<Box<dyn Future<Output = Result<Bytes>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Send payload to a worker using a specific RPC method name.

Provided Methods§

Source

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

Send payload to a worker and return the response bytes. Uses the RPC method name “dispatch” by default.

Source

fn execute_value<'life0, 'life1, 'async_trait>( &'life0 self, method: &'life1 str, payload: Value, ) -> Pin<Box<dyn Future<Output = Result<Value>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Send structured data directly (no serialization).

The default implementation falls back to JSON serialization via [execute_method]. Extension runtimes override this to pass values through the channel without JSON encode/decode.

Source

fn execute_value_traced<'life0, 'life1, 'async_trait>( &'life0 self, method: &'life1 str, payload: Value, ) -> Pin<Box<dyn Future<Output = Result<(Value, Arc<str>)>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Like [execute_value], but also returns the request_id under which the request was executed — the same id exposed to PHP via folk_request_id().

Plugins that maintain an access log (e.g. HTTP) use this to record the id for log correlation. The default implementation calls [execute_value] and returns an empty id (runtimes that don’t track one).

Dyn Compatibility§

This trait is dyn compatible.

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

Implementations on Foreign Types§

Source§

impl<T: Executor + ?Sized> Executor for Arc<T>

Blanket impl: an Arc<dyn Executor> is also an Executor.

Source§

fn execute_method<'life0, 'life1, 'async_trait>( &'life0 self, method: &'life1 str, payload: Bytes, ) -> Pin<Box<dyn Future<Output = Result<Bytes>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source§

fn execute_value<'life0, 'life1, 'async_trait>( &'life0 self, method: &'life1 str, payload: Value, ) -> Pin<Box<dyn Future<Output = Result<Value>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source§

fn execute_value_traced<'life0, 'life1, 'async_trait>( &'life0 self, method: &'life1 str, payload: Value, ) -> Pin<Box<dyn Future<Output = Result<(Value, Arc<str>)>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Implementors§