1 /*
2    +----------------------------------------------------------------------+
3    | PHP Version 5                                                        |
4    +----------------------------------------------------------------------+
5    | Copyright (c) 1997-2021 The PHP Group                                |
6    +----------------------------------------------------------------------+
7    | This source file is subject to version 3.01 of the PHP license,      |
8    | that is bundled with this package in the file LICENSE, and is        |
9    | available through the world-wide-web at the following url:           |
10    | http://www.php.net/license/3_01.txt                                  |
11    | If you did not receive a copy of the PHP license and are unable to   |
12    | obtain it through the world-wide-web, please send a note to          |
13    | license@php.net so we can mail you a copy immediately.               |
14    +----------------------------------------------------------------------+
15    | Author: Ruslan Osmanov <osmanov@php.net>                             |
16    +----------------------------------------------------------------------+
17 */
18 #include "watcher.h"
19 
20 /* {{{ php_ev_fork_object_ctor */
php_ev_fork_object_ctor(INTERNAL_FUNCTION_PARAMETERS,zval * loop,zend_bool ctor,zend_bool start)21 void php_ev_fork_object_ctor(INTERNAL_FUNCTION_PARAMETERS, zval *loop, zend_bool ctor, zend_bool start)
22 {
23 	zval                  *self;
24 	php_ev_object         *o_self;
25 	php_ev_object         *o_loop;
26 	ev_fork               *w;
27 
28 	zval                  *data     = NULL;
29 	zend_fcall_info        fci      = empty_fcall_info;
30 	zend_fcall_info_cache  fcc      = empty_fcall_info_cache;
31 	long                   priority = 0;
32 
33 	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "f|z!l",
34 				&fci, &fcc, &data, &priority) == FAILURE) {
35 		return;
36 	}
37 
38 	if (ctor) {
39 		self = getThis();
40 	} else {
41 		PHP_EV_INIT_CLASS_OBJECT(return_value, ev_io_class_entry_ptr);
42 		self = return_value;
43 	}
44 
45 	if (!loop) {
46 		loop = php_ev_default_loop(TSRMLS_C);
47 	}
48 
49 	o_self = (php_ev_object *) zend_object_store_get_object(self TSRMLS_CC);
50 	o_loop = (php_ev_object *) zend_object_store_get_object(loop TSRMLS_CC);
51 	w      = (ev_fork *) php_ev_new_watcher(sizeof(ev_fork), self,
52 			PHP_EV_LOOP_OBJECT_FETCH_FROM_OBJECT(o_loop),
53 			&fci, &fcc, data, priority TSRMLS_CC);
54 
55 	w->type = EV_FORK;
56 
57 	o_self->ptr = (void *) w;
58 
59 	if (start) {
60 		PHP_EV_WATCHER_START(ev_fork, w);
61 	}
62 }
63 /* }}} */
64 
65 
66 /* {{{ proto EvFork::__construct(EvLoop loop, callable callback[, mixed data = NULL[, int priority = 0]]) */
PHP_METHOD(EvFork,__construct)67 PHP_METHOD(EvFork, __construct)
68 {
69 	PHP_EV_WATCHER_CTOR(fork, NULL);
70 }
71 /* }}} */
72 
73 /* {{{ proto EvFork::createStopped(EvLoop loop, callable callback[, mixed data = NULL[, int priority = 0]]) */
PHP_METHOD(EvFork,createStopped)74 PHP_METHOD(EvFork, createStopped)
75 {
76 	PHP_EV_WATCHER_FACTORY_NS(fork, NULL);
77 }
78 /* }}} */
79 
80 /*
81  * Local variables:
82  * tab-width: 4
83  * c-basic-offset: 4
84  * End:
85  * vim600: noet sw=4 ts=4 sts=4 fdm=marker
86  * vim<600: noet sw=4 ts=4 sts=4
87  */
88