pub struct ClosureHandler<B: Send + Sync + 'static> {
pub backend: Arc<B>,
pub call_fn: Box<BackendCallFn<B>>,
}Expand description
A JmapHandler that wraps an async closure over a shared backend.
§CallerCtx limitation
The closure receives (args: Value, ctx: C) where C is the caller
context (e.g. auth identity). However, the closures registered via
[register_mail_handlers] / [register_chat_handlers] capture the
backend via Arc and ignore ctx entirely — they do not forward the
auth context to the handler.
If per-request auth context is needed, register handlers individually
via Dispatcher::register with a closure that explicitly uses ctx.
Adding CallerCtx forwarding to ClosureHandler itself would be a
breaking API change, deferred to a future version.
Fields§
§backend: Arc<B>§call_fn: Box<BackendCallFn<B>>Trait Implementations§
Source§impl<B: Send + Sync + 'static, C: Clone + Send + 'static> JmapHandler<C> for ClosureHandler<B>
impl<B: Send + Sync + 'static, C: Clone + Send + 'static> JmapHandler<C> for ClosureHandler<B>
Source§fn call(
&self,
_method: String,
call_id: String,
args: Value,
_caller: C,
) -> HandlerFuture
fn call( &self, _method: String, call_id: String, args: Value, _caller: C, ) -> HandlerFuture
method is the registered method name for this call. A single handler
instance may be registered under multiple names (e.g. both "Foo/get" and
"Bar/get"); this parameter lets the handler distinguish between them. Read moreAuto Trait Implementations§
impl<B> Freeze for ClosureHandler<B>
impl<B> !RefUnwindSafe for ClosureHandler<B>
impl<B> Send for ClosureHandler<B>
impl<B> Sync for ClosureHandler<B>
impl<B> Unpin for ClosureHandler<B>
impl<B> UnsafeUnpin for ClosureHandler<B>
impl<B> !UnwindSafe for ClosureHandler<B>
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