In JS interpreter code, js_event_loop
always creates and maintains the event loop.
More...
#include "../../js_modules.h"
#include <furi/core/event_loop.h>
#include <furi/core/event_loop_timer.h>
Go to the source code of this file.
Data Structures | |
struct | JsEventLoopNonTimerContract |
struct | JsEventLoopTimerContract |
struct | JsEventLoopContract |
Adapter for other JS modules that wish to integrate with the event loop JS module. More... | |
Typedefs | |
typedef struct JsEventLoop | JsEventLoop |
typedef mjs_val_t(* | JsEventLoopTransformer) (struct mjs *mjs, FuriEventLoopObject *object, void *context) |
Enumerations | |
enum | JsEventLoopObjectType { JsEventLoopObjectTypeTimer , JsEventLoopObjectTypeQueue , JsEventLoopObjectTypeMutex , JsEventLoopObjectTypeSemaphore , JsEventLoopObjectTypeStream } |
Functions | |
FuriEventLoop * | js_event_loop_get_loop (JsEventLoop *loop) |
Gets the FuriEventLoop owned by a JsEventLoop. | |
In JS interpreter code, js_event_loop
always creates and maintains the event loop.
There are two ways in which other modules can integrate with this loop:
js_event_loop
. This is useful for events that they user may be interested in. For more info, look at JsEventLoopContract
. Also look at js_event_loop_get_loop
, which you will need to unsubscribe the event loop from your object.JsEventLoop
which you can use to acquire an instance of FuriEventLoop
that you can manipulate directly, without the JS programmer having to pass contracts around. This is useful for "behind-the-scenes" events that the user does not need to know about. For more info, look at js_event_loop_get_loop
.In both cases, your module is responsible for both instantiating, unsubscribing and freeing the object that the event loop subscribes to.
FuriEventLoop * js_event_loop_get_loop | ( | JsEventLoop * | loop | ) |
Gets the FuriEventLoop owned by a JsEventLoop.
This function is useful in case your JS module wishes to integrate with the event loop without passing contracts through JS code. Your module will be dynamically linked to this one if you use this function, but only if JS code imports event_loop
before your module. An instance of JsEventLoop
may be obtained via js_module_get
.