@@ -170,6 +170,7 @@ typedef struct _zend_async_filesystem_event_s zend_async_filesystem_event_t;
170
170
171
171
typedef struct _zend_async_process_event_s zend_async_process_event_t ;
172
172
typedef struct _zend_async_thread_event_s zend_async_thread_event_t ;
173
+ typedef struct _zend_async_trigger_event_s zend_async_trigger_event_t ;
173
174
174
175
typedef struct _zend_async_dns_nameinfo_s zend_async_dns_nameinfo_t ;
175
176
typedef 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);
215
216
typedef zend_async_thread_event_t * (* zend_async_new_thread_event_t )(
216
217
zend_async_thread_entry_t entry , void * arg , size_t extra_size
217
218
);
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 );
218
221
typedef zend_async_filesystem_event_t * (* zend_async_new_filesystem_event_t )(
219
222
zend_string * path , const unsigned int flags , size_t extra_size
220
223
);
@@ -618,6 +621,11 @@ struct _zend_async_task_s {
618
621
zend_async_event_t base ;
619
622
};
620
623
624
+ struct _zend_async_trigger_event_s {
625
+ zend_async_event_t base ;
626
+ zend_async_trigger_event_trigger_fn trigger ;
627
+ };
628
+
621
629
///////////////////////////////////////////////////////////////////
622
630
/// Scope Structures
623
631
///////////////////////////////////////////////////////////////////
@@ -1106,6 +1114,9 @@ ZEND_API extern zend_async_exec_t zend_async_exec_fn;
1106
1114
ZEND_API bool zend_async_thread_pool_is_enabled (void );
1107
1115
ZEND_API extern zend_async_queue_task_t zend_async_queue_task_fn ;
1108
1116
1117
+ /* Trigger Event API */
1118
+ ZEND_API extern zend_async_new_trigger_event_t zend_async_new_trigger_event_fn ;
1119
+
1109
1120
ZEND_API bool zend_async_scheduler_register (
1110
1121
char * module ,
1111
1122
bool allow_override ,
@@ -1142,7 +1153,8 @@ ZEND_API bool zend_async_reactor_register(
1142
1153
zend_async_getaddrinfo_t getaddrinfo_fn ,
1143
1154
zend_async_freeaddrinfo_t freeaddrinfo_fn ,
1144
1155
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
1146
1158
);
1147
1159
1148
1160
ZEND_API void zend_async_thread_pool_register (
@@ -1292,6 +1304,10 @@ END_EXTERN_C()
1292
1304
1293
1305
#define ZEND_ASYNC_QUEUE_TASK (task ) zend_async_queue_task_fn(task)
1294
1306
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
+
1295
1311
/* Socket Listening API Macros */
1296
1312
#define ZEND_ASYNC_SOCKET_LISTEN (host , port , backlog ) \
1297
1313
zend_async_socket_listen_fn(host, port, backlog, 0)
0 commit comments