Type Alias DispatchToEventLoopCallback

Source
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),
}

Variants§

§1.0.0

None

No value.

§1.0.0

Some(unsafe extern "C" fn(*mut c_void, *mut u8) -> bool)

Some value of type T.