blob: 9ca3ac08702949bc2df128a6f6783db556e99b2f [file] [log] [blame]
/*
* Copyright (C) Dmitry Volyntsev
* Copyright (C) NGINX, Inc.
*/
#ifndef _NJS_EVENT_H_INCLUDED_
#define _NJS_EVENT_H_INCLUDED_
#define NJS_EVENT_RELEASE 1
#define NJS_EVENT_DELETE 2
#define njs_waiting_events(vm) (!njs_lvlhsh_is_empty(&(vm)->events_hash))
#define njs_posted_events(vm) (!njs_queue_is_empty(&(vm)->posted_events))
#define njs_promise_events(vm) (!njs_queue_is_empty(&(vm)->promise_events))
typedef struct {
njs_function_t *function;
njs_value_t *args;
njs_uint_t nargs;
njs_host_event_t host_event;
njs_event_destructor_t destructor;
njs_value_t id;
njs_queue_link_t link;
unsigned posted:1;
unsigned once:1;
} njs_event_t;
njs_int_t njs_add_event(njs_vm_t *vm, njs_event_t *event);
void njs_del_event(njs_vm_t *vm, njs_event_t *event, njs_uint_t action);
extern const njs_lvlhsh_proto_t njs_event_hash_proto;
#endif /* _NJS_EVENT_H_INCLUDED_ */