pub type DispatchToEventLoopCallback = Option<unsafe extern "C" fn(*mut c_void, *mut u8) -> bool>;
Expand description
Callbacks to dispatch a JS::Dispatchable to a JSContext’s thread’s event loop.
The DispatchToEventLoopCallback set on a particular JSContext must accept
JS::Dispatchable instances and arrange for their run
methods to be called
eventually on the JSContext’s thread. This is used for cross-thread dispatch,
so the callback itself must be safe to call from any thread. It cannot
trigger a GC.
The DelayedDispatchToEventLoopCallback in addition takes a delay, and it
must accept JS::Dispatchable instances and arrange for their run
methods
to be called after the delay on the JSContext’s thread.
The embeddings must have its own timeout manager to handle the delay.
If a timeout manager is not available for given context, it should return
false, optionally with a warning message printed.
If the callback returns true
, it must eventually run the given
Dispatchable; otherwise, SpiderMonkey may leak memory or hang.
The callback may return false
to indicate that the JSContext’s thread is
shutting down and is no longer accepting runnables. Shutting down is a
one-way transition: once the callback has rejected a runnable, it must reject
all subsequently submitted runnables as well.
To establish a DispatchToEventLoopCallback, the embedding may either call InitDispatchsToEventLoop to provide its own, or call js::UseInternalJobQueues to select a default implementation built into SpiderMonkey. This latter depends on the embedding to call js::RunJobs on the JavaScript thread to process queued Dispatchables at appropriate times.
Aliased Type§
pub enum DispatchToEventLoopCallback {
None,
Some(unsafe extern "C" fn(*mut c_void, *mut u8) -> bool),
}