pub struct InProcSpawner<W = MiddlewareWorker> {
pub registry: HashMap<String, WorkerFn>,
/* private fields */
}Expand description
agent-string → WorkerFn registry. The generic parameter W pins
the per-kind Worker concrete type at the type level, so AgentBlock /
Lua / RustFn each produce their own Worker type through
InProcSpawner<W> and the type binding is preserved right up until
SpawnerAdapter::spawn() erases the return as Box<dyn Worker>.
W must be constructible from WorkerJoinHandler via From — i.e.
a newtype that embeds the async-signal handle.
Fields§
§registry: HashMap<String, WorkerFn>Agent name → implementation lookup table.
Implementations§
Source§impl InProcSpawner
impl InProcSpawner
Sourcepub fn new() -> Self
pub fn new() -> Self
Creates an empty registry, defaulting the Worker type to
MiddlewareWorker (used by existing call sites and tests).
Sourcepub fn register<F, Fut>(&mut self, agent: impl Into<String>, f: F) -> &mut Selfwhere
F: Fn(WorkerInvocation) -> Fut + Send + Sync + 'static,
Fut: Future<Output = Result<WorkerResult, WorkerError>> + Send + 'static,
pub fn register<F, Fut>(&mut self, agent: impl Into<String>, f: F) -> &mut Selfwhere
F: Fn(WorkerInvocation) -> Fut + Send + Sync + 'static,
Fut: Future<Output = Result<WorkerResult, WorkerError>> + Send + 'static,
Registers a WorkerFn-shaped async closure under agent,
overwriting any previous registration for the same name. Returns
&mut Self for chained registration calls.
Source§impl<W> InProcSpawner<W>
impl<W> InProcSpawner<W>
Trait Implementations§
Source§impl Default for InProcSpawner
impl Default for InProcSpawner
Source§impl<W: Worker + From<WorkerJoinHandler> + Send + Sync + 'static> SpawnerAdapter for InProcSpawner<W>
impl<W: Worker + From<WorkerJoinHandler> + Send + Sync + 'static> SpawnerAdapter for InProcSpawner<W>
Source§fn spawn<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
engine: &'life1 Engine,
ctx: &'life2 Ctx,
task_id: TaskId,
attempt: u32,
token: CapToken,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn Worker>, SpawnError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn spawn<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
engine: &'life1 Engine,
ctx: &'life2 Ctx,
task_id: TaskId,
attempt: u32,
token: CapToken,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn Worker>, SpawnError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Spawn one attempt as a worker. Returns
Box<dyn Worker>. Read moreAuto Trait Implementations§
impl<W = MiddlewareWorker> !RefUnwindSafe for InProcSpawner<W>
impl<W = MiddlewareWorker> !UnwindSafe for InProcSpawner<W>
impl<W> Freeze for InProcSpawner<W>
impl<W> Send for InProcSpawner<W>where
W: Send,
impl<W> Sync for InProcSpawner<W>where
W: Sync,
impl<W> Unpin for InProcSpawner<W>where
W: Unpin,
impl<W> UnsafeUnpin for InProcSpawner<W>
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
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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>
Converts
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>
Converts
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 more