@@ -170,6 +170,7 @@ typedef struct _zend_async_filesystem_event_s zend_async_filesystem_event_t;
170170
171171typedef struct _zend_async_process_event_s zend_async_process_event_t ;
172172typedef struct _zend_async_thread_event_s zend_async_thread_event_t ;
173+ typedef struct _zend_async_trigger_event_s zend_async_trigger_event_t ;
173174
174175typedef struct _zend_async_dns_nameinfo_s zend_async_dns_nameinfo_t ;
175176typedef struct _zend_async_dns_addrinfo_s zend_async_dns_addrinfo_t ;
@@ -215,6 +216,8 @@ typedef void (*zend_async_thread_entry_t)(void *arg, size_t extra_size);
215216typedef zend_async_thread_event_t * (* zend_async_new_thread_event_t )(
216217 zend_async_thread_entry_t entry , void * arg , size_t extra_size
217218);
219+ typedef void (* zend_async_trigger_event_trigger_fn )(zend_async_trigger_event_t * event );
220+ typedef zend_async_trigger_event_t * (* zend_async_new_trigger_event_t )(size_t extra_size );
218221typedef zend_async_filesystem_event_t * (* zend_async_new_filesystem_event_t )(
219222 zend_string * path , const unsigned int flags , size_t extra_size
220223);
@@ -618,6 +621,11 @@ struct _zend_async_task_s {
618621 zend_async_event_t base ;
619622};
620623
624+ struct _zend_async_trigger_event_s {
625+ zend_async_event_t base ;
626+ zend_async_trigger_event_trigger_fn trigger ;
627+ };
628+
621629///////////////////////////////////////////////////////////////////
622630/// Scope Structures
623631///////////////////////////////////////////////////////////////////
@@ -1106,6 +1114,9 @@ ZEND_API extern zend_async_exec_t zend_async_exec_fn;
11061114ZEND_API bool zend_async_thread_pool_is_enabled (void );
11071115ZEND_API extern zend_async_queue_task_t zend_async_queue_task_fn ;
11081116
1117+ /* Trigger Event API */
1118+ ZEND_API extern zend_async_new_trigger_event_t zend_async_new_trigger_event_fn ;
1119+
11091120ZEND_API bool zend_async_scheduler_register (
11101121 char * module ,
11111122 bool allow_override ,
@@ -1142,7 +1153,8 @@ ZEND_API bool zend_async_reactor_register(
11421153 zend_async_getaddrinfo_t getaddrinfo_fn ,
11431154 zend_async_freeaddrinfo_t freeaddrinfo_fn ,
11441155 zend_async_new_exec_event_t new_exec_event_fn ,
1145- zend_async_exec_t exec_fn
1156+ zend_async_exec_t exec_fn ,
1157+ zend_async_new_trigger_event_t new_trigger_event_fn
11461158);
11471159
11481160ZEND_API void zend_async_thread_pool_register (
@@ -1292,6 +1304,10 @@ END_EXTERN_C()
12921304
12931305#define ZEND_ASYNC_QUEUE_TASK (task ) zend_async_queue_task_fn(task)
12941306
1307+ /* Trigger Event API Macros */
1308+ #define ZEND_ASYNC_NEW_TRIGGER_EVENT () zend_async_new_trigger_event_fn(0)
1309+ #define ZEND_ASYNC_NEW_TRIGGER_EVENT_EX (extra_size ) zend_async_new_trigger_event_fn(extra_size)
1310+
12951311/* Socket Listening API Macros */
12961312#define ZEND_ASYNC_SOCKET_LISTEN (host , port , backlog ) \
12971313 zend_async_socket_listen_fn(host, port, backlog, 0)
0 commit comments