11#ifndef PythonMonkey_JobQueue_
12#define PythonMonkey_JobQueue_
15#include <js/Promise.h>
35bool init(JSContext *cx);
52bool getHostDefinedData(JSContext *cx, JS::MutableHandle<JSObject *> data)
const override;
64 JS::HandleObject job, JS::HandleObject allocationSite,
65 JS::HandleObject incumbentGlobal)
override;
82void runJobs(JSContext *cx)
override;
87bool empty()
const override;
112using FunctionVector = JS::GCVector<JSFunction *, 0, js::SystemAllocPolicy>;
113JS::PersistentRooted<FunctionVector> *finalizationRegistryCallbacks;
124js::UniquePtr<JS::JobQueue::SavedJobQueue> saveJobQueue(JSContext *)
override;
134static bool dispatchToEventLoop(
void *closure, JS::Dispatchable *dispatchable);
146static void promiseRejectionTracker(JSContext *cx,
bool mutedErrors,
147 JS::HandleObject promise, JS::PromiseRejectionHandlingState state,
bool sendJobToMainLoop(PyObject *pyFunc)
Send job to the Python event-loop on main thread (Thread-Safe)
Definition JobQueue.cc:114
Implement the ECMAScript Job Queue: https://www.ecma-international.org/ecma-262/9....
Definition JobQueue.hh:24
bool empty() const override
Definition JobQueue.cc:61
bool isDrainingStopped() const override
Definition JobQueue.cc:66
bool init(JSContext *cx)
Initialize PythonMonkey's event-loop job queue.
Definition JobQueue.cc:80
void queueFinalizationRegistryCallback(JSFunction *callback)
Appends a callback to the queue of FinalizationRegistry callbacks.
Definition JobQueue.cc:167
void runJobs(JSContext *cx) override
Run all jobs in the queue. Running one job may enqueue others; continue to run jobs until the queue i...
Definition JobQueue.cc:57
bool runFinalizationRegistryCallbacks(JSContext *cx)
Runs the accumulated queue of FinalizationRegistry callbacks.
Definition JobQueue.cc:171
bool enqueuePromiseJob(JSContext *cx, JS::HandleObject promise, JS::HandleObject job, JS::HandleObject allocationSite, JS::HandleObject incumbentGlobal) override
Enqueue a reaction job job for promise, which was allocated at allocationSite. Provide incumbentGloba...
Definition JobQueue.cc:34
bool getHostDefinedData(JSContext *cx, JS::MutableHandle< JSObject * > data) const override
Ask the embedding for the host defined data.
Definition JobQueue.cc:29