/* * Copyright (C) Nginx, Inc. */ #ifndef _NJS_PROMISE_H_INCLUDED_ #define _NJS_PROMISE_H_INCLUDED_ typedef enum { NJS_PROMISE_PENDING = 0, NJS_PROMISE_FULFILL, NJS_PROMISE_REJECTED } njs_promise_type_t; typedef struct { njs_value_t promise; njs_value_t resolve; njs_value_t reject; } njs_promise_capability_t; typedef struct { njs_promise_type_t state; njs_value_t result; njs_queue_t fulfill_queue; njs_queue_t reject_queue; njs_bool_t is_handled; } njs_promise_data_t; njs_int_t njs_promise_constructor(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs, njs_index_t unused, njs_value_t *retval); njs_promise_capability_t *njs_promise_new_capability(njs_vm_t *vm, njs_value_t *constructor); njs_function_t *njs_promise_create_function(njs_vm_t *vm, size_t context_size); njs_int_t njs_promise_perform_then(njs_vm_t *vm, njs_value_t *value, njs_value_t *fulfilled, njs_value_t *rejected, njs_promise_capability_t *capability, njs_value_t *retval); njs_int_t njs_promise_resolve(njs_vm_t *vm, njs_value_t *constructor, njs_value_t *x, njs_value_t *retval); extern const njs_object_type_init_t njs_promise_type_init; #endif /* _NJS_PROMISE_H_INCLUDED_ */