@@ -173,20 +173,28 @@ typedef void (*zend_async_reactor_shutdown_t)(void);
173
173
typedef bool (* zend_async_reactor_execute_t )(bool no_wait );
174
174
typedef bool (* zend_async_reactor_loop_alive_t )(void );
175
175
176
- typedef zend_async_poll_event_t * (* zend_async_new_socket_event_t )(zend_socket_t socket , async_poll_event events , size_t size );
176
+ typedef zend_async_poll_event_t * (* zend_async_new_socket_event_t )(
177
+ zend_socket_t socket , async_poll_event events , size_t extra_size
178
+ );
177
179
typedef zend_async_poll_event_t * (* zend_async_new_poll_event_t )(
178
- zend_file_descriptor_t fh , zend_socket_t socket , async_poll_event events , size_t size
180
+ zend_file_descriptor_t fh , zend_socket_t socket , async_poll_event events , size_t extra_size
181
+ );
182
+ typedef zend_async_timer_event_t * (* zend_async_new_timer_event_t )(
183
+ const zend_ulong timeout , const bool is_periodic , size_t extra_size
184
+ );
185
+ typedef zend_async_signal_event_t * (* zend_async_new_signal_event_t )(int signum , size_t extra_size );
186
+ typedef zend_async_process_event_t * (* zend_async_new_process_event_t )(zend_process_t process_handle , size_t extra_size );
187
+ typedef void (* zend_async_thread_entry_t )(void * arg , size_t extra_size );
188
+ typedef zend_async_thread_event_t * (* zend_async_new_thread_event_t )(
189
+ zend_async_thread_entry_t entry , void * arg , size_t extra_size
179
190
);
180
- typedef zend_async_timer_event_t * (* zend_async_new_timer_event_t )(const zend_ulong timeout , const bool is_periodic , size_t size );
181
- typedef zend_async_signal_event_t * (* zend_async_new_signal_event_t )(int signum , size_t size );
182
- typedef zend_async_process_event_t * (* zend_async_new_process_event_t )(zend_process_t process_handle , size_t size );
183
- typedef void (* zend_async_thread_entry_t )(void * arg , size_t size );
184
- typedef zend_async_thread_event_t * (* zend_async_new_thread_event_t )(zend_async_thread_entry_t entry , void * arg , size_t size );
185
- typedef zend_async_filesystem_event_t * (* zend_async_new_filesystem_event_t )(zend_string * path , const unsigned int flags , size_t size );
186
-
187
- typedef zend_async_dns_nameinfo_t * (* zend_async_getnameinfo_t )(const struct sockaddr * addr , int flags , size_t size );
191
+ typedef zend_async_filesystem_event_t * (* zend_async_new_filesystem_event_t )(
192
+ zend_string * path , const unsigned int flags , size_t extra_size
193
+ );
194
+
195
+ typedef zend_async_dns_nameinfo_t * (* zend_async_getnameinfo_t )(const struct sockaddr * addr , int flags , size_t extra_size );
188
196
typedef zend_async_dns_addrinfo_t * (* zend_async_getaddrinfo_t )(
189
- const char * node , const char * service , const struct addrinfo * hints , size_t size
197
+ const char * node , const char * service , const struct addrinfo * hints , size_t extra_size
190
198
);
191
199
192
200
typedef zend_async_exec_event_t * (* zend_async_new_exec_event_t ) (
@@ -197,7 +205,7 @@ typedef zend_async_exec_event_t* (*zend_async_new_exec_event_t) (
197
205
zval * std_error ,
198
206
const char * cwd ,
199
207
const char * env ,
200
- size_t size
208
+ size_t extra_size
201
209
);
202
210
203
211
typedef int (* zend_async_exec_t ) (
@@ -267,6 +275,8 @@ typedef struct _zend_async_callbacks_vector_s {
267
275
struct _zend_async_event_s {
268
276
/* If event is closed, it cannot be started or stopped. */
269
277
uint32_t flags ;
278
+ /* Offset to the beginning of additional data associated with the event (used for extensions) */
279
+ uint32_t extra_offset ;
270
280
union
271
281
{
272
282
/* The refcount of the event. */
@@ -276,6 +286,7 @@ struct _zend_async_event_s {
276
286
};
277
287
/* The Event loop reference count. */
278
288
uint32_t loop_ref_count ;
289
+ /* Events callbacks */
279
290
zend_async_callbacks_vector_t callbacks ;
280
291
/* Methods */
281
292
zend_async_event_add_callback_t add_callback ;
@@ -1018,27 +1029,29 @@ END_EXTERN_C()
1018
1029
#define ZEND_ASYNC_REACTOR_LOOP_ALIVE () zend_async_reactor_loop_alive_fn()
1019
1030
1020
1031
#define ZEND_ASYNC_NEW_SOCKET_EVENT (socket , events ) zend_async_new_socket_event_fn(socket, events, 0)
1021
- #define ZEND_ASYNC_NEW_SOCKET_EVENT_EX (socket , events , size ) zend_async_new_socket_event_fn(socket, events, size )
1032
+ #define ZEND_ASYNC_NEW_SOCKET_EVENT_EX (socket , events , extra_size ) zend_async_new_socket_event_fn(socket, events, extra_size )
1022
1033
#define ZEND_ASYNC_NEW_POLL_EVENT (fh , socket , events ) zend_async_new_poll_event_fn(fh, socket, events, 0)
1023
- #define ZEND_ASYNC_NEW_POLL_EVENT_EX (fh , socket , events , size ) zend_async_new_poll_event_fn(fh, socket, events, size )
1034
+ #define ZEND_ASYNC_NEW_POLL_EVENT_EX (fh , socket , events , extra_size ) zend_async_new_poll_event_fn(fh, socket, events, extra_size )
1024
1035
#define ZEND_ASYNC_NEW_TIMER_EVENT (timeout , is_periodic ) zend_async_new_timer_event_fn(timeout, is_periodic, 0)
1025
- #define ZEND_ASYNC_NEW_TIMER_EVENT_EX (timeout , is_periodic , size ) zend_async_new_timer_event_fn(timeout, is_periodic, size )
1036
+ #define ZEND_ASYNC_NEW_TIMER_EVENT_EX (timeout , is_periodic , extra_size ) zend_async_new_timer_event_fn(timeout, is_periodic, extra_size )
1026
1037
#define ZEND_ASYNC_NEW_SIGNAL_EVENT (signum ) zend_async_new_signal_event_fn(signum, 0)
1027
- #define ZEND_ASYNC_NEW_SIGNAL_EVENT_EX (signum , size ) zend_async_new_signal_event_fn(signum, size )
1028
- #define ZEND_ASYNC_NEW_PROCESS_EVENT () zend_async_new_process_event_fn()
1029
- #define ZEND_ASYNC_NEW_PROCESS_EVENT_EX () zend_async_new_process_event_fn()
1030
- #define ZEND_ASYNC_NEW_THREAD_EVENT () zend_async_new_thread_event_fn()
1038
+ #define ZEND_ASYNC_NEW_SIGNAL_EVENT_EX (signum , extra_size ) zend_async_new_signal_event_fn(signum, extra_size )
1039
+ #define ZEND_ASYNC_NEW_PROCESS_EVENT (process_handle ) zend_async_new_process_event_fn(process_handle, 0 )
1040
+ #define ZEND_ASYNC_NEW_PROCESS_EVENT_EX (process_handle , extra_size ) zend_async_new_process_event_fn(process_handle, extra_size )
1041
+ #define ZEND_ASYNC_NEW_THREAD_EVENT (entry , arg ) zend_async_new_thread_event_fn(entry, arg, 0 )
1031
1042
#define ZEND_ASYNC_NEW_THREAD_EVENT_EX (entry , arg ) zend_async_new_thread_event_fn(entry, arg, 0)
1032
1043
#define ZEND_ASYNC_NEW_FILESYSTEM_EVENT (path , flags ) zend_async_new_filesystem_event_fn(path, flags, 0)
1033
- #define ZEND_ASYNC_NEW_FILESYSTEM_EVENT_EX (path , flags , size ) zend_async_new_filesystem_event_fn(path, flags, size )
1044
+ #define ZEND_ASYNC_NEW_FILESYSTEM_EVENT_EX (path , flags , extra_size ) zend_async_new_filesystem_event_fn(path, flags, extra_size )
1034
1045
1035
1046
#define ZEND_ASYNC_GETNAMEINFO (addr , flags ) zend_async_getnameinfo_fn(addr, flags, 0)
1036
- #define ZEND_ASYNC_GETNAMEINFO_EX (addr , flags , size ) zend_async_getnameinfo_fn(addr, flags, size )
1047
+ #define ZEND_ASYNC_GETNAMEINFO_EX (addr , flags , extra_size ) zend_async_getnameinfo_fn(addr, flags, extra_size )
1037
1048
#define ZEND_ASYNC_GETADDRINFO (node , service , hints , flags ) zend_async_getaddrinfo_fn(node, service, hints, flags, 0)
1038
- #define ZEND_ASYNC_GETADDRINFO_EX (node , service , hints , flags , size ) zend_async_getaddrinfo_fn(node, service, hints, flags, size )
1049
+ #define ZEND_ASYNC_GETADDRINFO_EX (node , service , hints , flags , extra_size ) zend_async_getaddrinfo_fn(node, service, hints, flags, extra_size )
1039
1050
1040
1051
#define ZEND_ASYNC_NEW_EXEC_EVENT (exec_mode , cmd , return_buffer , return_value , std_error , cwd , env ) \
1041
1052
zend_async_new_exec_event_fn(exec_mode, cmd, return_buffer, return_value, std_error, cwd, env, 0)
1053
+ #define ZEND_ASYNC_NEW_EXEC_EVENT_EX (exec_mode , cmd , return_buffer , return_value , std_error , cwd , env , extra_size ) \
1054
+ zend_async_new_exec_event_fn(exec_mode, cmd, return_buffer, return_value, std_error, cwd, env, extra_size)
1042
1055
#define ZEND_ASYNC_EXEC (exec_mode , cmd , return_buffer , return_value , std_error , cwd , env , timeout ) \
1043
1056
zend_async_exec_fn(exec_mode, cmd, return_buffer, return_value, std_error, cwd, env, timeout)
1044
1057
0 commit comments