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§
Sourcefn 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,
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§
Sourcefn 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<'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.
Sourcefn 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<'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.
Sourcefn 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,
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.
impl<T: Executor + ?Sized> Executor for Arc<T>
Blanket impl: an Arc<dyn Executor> is also an Executor.