njs_event_t *event;
nxt_lvlhsh_each_t lhe;
- if (njs_is_pending_events(vm)) {
+ if (njs_waiting_events(vm)) {
nxt_lvlhsh_each_init(&lhe, &njs_event_hash_proto);
for ( ;; ) {
nxt_int_t
-njs_vm_pending(njs_vm_t *vm)
+njs_vm_waiting(njs_vm_t *vm)
{
- return njs_is_pending_events(vm);
+ return njs_waiting_events(vm);
+}
+
+
+nxt_int_t
+njs_vm_posted(njs_vm_t *vm)
+{
+ return njs_posted_events(vm);
}
}
}
- return njs_is_pending_events(vm) ? NJS_AGAIN : NJS_OK;
+ return njs_posted_events(vm) ? NJS_AGAIN : NJS_OK;
}
njs_function_t *function, nxt_uint_t once, njs_host_event_t host_ev,
njs_event_destructor destructor);
NXT_EXPORT void njs_vm_del_event(njs_vm_t *vm, njs_vm_event_t vm_event);
-NXT_EXPORT nxt_int_t njs_vm_pending(njs_vm_t *vm);
NXT_EXPORT nxt_int_t njs_vm_post_event(njs_vm_t *vm, njs_vm_event_t vm_event,
const njs_value_t *args, nxt_uint_t nargs);
+/*
+ * Returns 1 if async events are present.
+ */
+NXT_EXPORT nxt_int_t njs_vm_waiting(njs_vm_t *vm);
+
+/*
+ * Returns 1 if posted events are ready to be executed.
+ */
+NXT_EXPORT nxt_int_t njs_vm_posted(njs_vm_t *vm);
+
+#define njs_vm_pending(vm) (njs_vm_waiting(vm) || njs_vm_posted(vm))
+
+
/*
* Runs the specified function with provided arguments.
* NJS_OK successful run.
#define NJS_EVENT_DELETE 2
-#define njs_is_pending_events(vm) (!nxt_lvlhsh_is_empty(&(vm)->events_hash))
+#define njs_waiting_events(vm) (!nxt_lvlhsh_is_empty(&(vm)->events_hash))
+
+#define njs_posted_events(vm) (!nxt_queue_is_empty(&(vm)->posted_events))
typedef struct {