Skip to content

Commit 16ce868

Browse files
author
ace411
committed
feat: update project internals
- remove fwritev(), freadv(), pwritev(), and preadv() functions - add addReadStream(), addWriteStream(), and parseHttpResponse() functions - rename parseHttp() to parseHttpRequest() - place stack-allocated buffer in php_mrloop_readv_cb() signature
1 parent 1c5ae9e commit 16ce868

File tree

4 files changed

+261
-374
lines changed

4 files changed

+261
-374
lines changed

mrloop_arginfo.h

Lines changed: 27 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -18,44 +18,35 @@ ZEND_ARG_TYPE_INFO(0, interval, IS_DOUBLE, 0)
1818
ZEND_ARG_TYPE_INFO(0, callback, IS_CALLABLE, 0)
1919
ZEND_END_ARG_INFO()
2020

21-
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Mrloop_freadv, 0, 0, 4)
22-
ZEND_ARG_TYPE_INFO(0, file, IS_STRING, 0)
23-
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, nbytes, IS_LONG, 0, "null")
24-
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, offset, IS_LONG, 0, "null")
21+
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Mrloop_tcpServer, 0, 0, 2)
22+
ZEND_ARG_TYPE_INFO(0, port, IS_LONG, 0)
2523
ZEND_ARG_TYPE_INFO(0, callback, IS_CALLABLE, 0)
2624
ZEND_END_ARG_INFO()
2725

28-
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Mrloop_preadv, 0, 0, 3)
29-
ZEND_ARG_TYPE_INFO(0, command, IS_STRING, 0)
30-
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, nbytes, IS_LONG, 0, "null")
31-
ZEND_ARG_TYPE_INFO(0, callback, IS_CALLABLE, 0)
26+
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Mrloop_parseHttpRequest, 0, 0, 2)
27+
ZEND_ARG_TYPE_INFO(0, request, IS_STRING, 0)
28+
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, header_limit, IS_LONG, 0, "100")
3229
ZEND_END_ARG_INFO()
3330

34-
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Mrloop_pwritev, 0, 0, 3)
35-
ZEND_ARG_TYPE_INFO(0, command, IS_STRING, 0)
36-
ZEND_ARG_TYPE_INFO(0, contents, IS_STRING, 0)
37-
ZEND_ARG_TYPE_INFO(0, callback, IS_CALLABLE, 0)
31+
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Mrloop_parseHttpResponse, 0, 0, 2)
32+
ZEND_ARG_TYPE_INFO(0, response, IS_STRING, 0)
33+
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, header_limit, IS_LONG, 0, "100")
3834
ZEND_END_ARG_INFO()
3935

40-
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Mrloop_fwritev, 0, 0, 4)
41-
ZEND_ARG_TYPE_INFO(0, command, IS_STRING, 0)
42-
ZEND_ARG_TYPE_INFO(0, contents, IS_STRING, 0)
43-
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, flags, IS_LONG, 0, "null")
36+
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Mrloop_addSignal, 0, 0, 2)
37+
ZEND_ARG_TYPE_INFO(0, signal, IS_LONG, 0)
4438
ZEND_ARG_TYPE_INFO(0, callback, IS_CALLABLE, 0)
4539
ZEND_END_ARG_INFO()
4640

47-
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Mrloop_tcpServer, 0, 0, 2)
48-
ZEND_ARG_TYPE_INFO(0, port, IS_LONG, 0)
41+
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Mrloop_addReadStream, 0, 0, 3)
42+
ZEND_ARG_TYPE_INFO(0, stream, IS_RESOURCE, 0)
43+
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, nbytes, IS_LONG, 0, "null")
4944
ZEND_ARG_TYPE_INFO(0, callback, IS_CALLABLE, 0)
5045
ZEND_END_ARG_INFO()
5146

52-
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Mrloop_parseHttp, 0, 0, 2)
53-
ZEND_ARG_TYPE_INFO(0, request, IS_STRING, 0)
54-
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, header_limit, IS_LONG, 0, "100")
55-
ZEND_END_ARG_INFO()
56-
57-
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Mrloop_addSignal, 0, 0, 2)
58-
ZEND_ARG_TYPE_INFO(0, signal, IS_LONG, 0)
47+
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Mrloop_addWriteStream, 0, 0, 3)
48+
ZEND_ARG_TYPE_INFO(0, stream, IS_RESOURCE, 0)
49+
ZEND_ARG_TYPE_INFO(0, contents, IS_STRING, 0)
5950
ZEND_ARG_TYPE_INFO(0, callback, IS_CALLABLE, 0)
6051
ZEND_END_ARG_INFO()
6152

@@ -64,25 +55,23 @@ ZEND_METHOD(Mrloop, stop);
6455
ZEND_METHOD(Mrloop, run);
6556
ZEND_METHOD(Mrloop, addTimer);
6657
ZEND_METHOD(Mrloop, addPeriodicTimer);
67-
ZEND_METHOD(Mrloop, freadv);
68-
ZEND_METHOD(Mrloop, preadv);
69-
ZEND_METHOD(Mrloop, pwritev);
70-
ZEND_METHOD(Mrloop, fwritev);
7158
ZEND_METHOD(Mrloop, tcpServer);
72-
ZEND_METHOD(Mrloop, parseHttp);
59+
ZEND_METHOD(Mrloop, parseHttpRequest);
7360
ZEND_METHOD(Mrloop, addSignal);
61+
ZEND_METHOD(Mrloop, addReadStream);
62+
ZEND_METHOD(Mrloop, addWriteStream);
63+
ZEND_METHOD(Mrloop, parseHttpResponse);
7464

7565
static const zend_function_entry class_Mrloop_methods[] = {
7666
PHP_ME(Mrloop, init, arginfo_class_Mrloop_init, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
7767
PHP_ME(Mrloop, stop, arginfo_class_Mrloop_stop, ZEND_ACC_PUBLIC)
7868
PHP_ME(Mrloop, run, arginfo_class_Mrloop_run, ZEND_ACC_PUBLIC)
7969
PHP_ME(Mrloop, addTimer, arginfo_class_Mrloop_addTimer, ZEND_ACC_PUBLIC)
8070
PHP_ME(Mrloop, addPeriodicTimer, arginfo_class_Mrloop_addPeriodicTimer, ZEND_ACC_PUBLIC)
81-
PHP_ME(Mrloop, freadv, arginfo_class_Mrloop_freadv, ZEND_ACC_PUBLIC)
82-
PHP_ME(Mrloop, preadv, arginfo_class_Mrloop_preadv, ZEND_ACC_PUBLIC)
83-
PHP_ME(Mrloop, pwritev, arginfo_class_Mrloop_pwritev, ZEND_ACC_PUBLIC)
84-
PHP_ME(Mrloop, fwritev, arginfo_class_Mrloop_fwritev, ZEND_ACC_PUBLIC)
85-
PHP_ME(Mrloop, tcpServer, arginfo_class_Mrloop_tcpServer, ZEND_ACC_PUBLIC)
86-
PHP_ME(Mrloop, parseHttp, arginfo_class_Mrloop_parseHttp, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
87-
PHP_ME(Mrloop, addSignal, arginfo_class_Mrloop_addSignal, ZEND_ACC_PUBLIC)
88-
PHP_FE_END};
71+
PHP_ME(Mrloop, tcpServer, arginfo_class_Mrloop_tcpServer, ZEND_ACC_PUBLIC)
72+
PHP_ME(Mrloop, parseHttpRequest, arginfo_class_Mrloop_parseHttpRequest, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
73+
PHP_ME(Mrloop, addSignal, arginfo_class_Mrloop_addSignal, ZEND_ACC_PUBLIC)
74+
PHP_ME(Mrloop, addReadStream, arginfo_class_Mrloop_addReadStream, ZEND_ACC_PUBLIC)
75+
PHP_ME(Mrloop, addWriteStream, arginfo_class_Mrloop_addWriteStream, ZEND_ACC_PUBLIC)
76+
PHP_ME(Mrloop, parseHttpResponse, arginfo_class_Mrloop_parseHttpResponse, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
77+
PHP_FE_END};

php_mrloop.c

Lines changed: 18 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -42,52 +42,45 @@ PHP_METHOD(Mrloop, addPeriodicTimer)
4242
}
4343
/* }}} */
4444

45-
/* {{{ proto void Mrloop::freadv( string file [, ?int nbytes [, ?int offset [, callable callback ]]] ) */
46-
PHP_METHOD(Mrloop, freadv)
47-
{
48-
php_mrloop_file_readv(INTERNAL_FUNCTION_PARAM_PASSTHRU);
49-
}
50-
/* }}} */
51-
52-
/* {{{ proto void Mrloop::preadv( string command [, ?int nbytes [, callable callback ]] ) */
53-
PHP_METHOD(Mrloop, preadv)
45+
/* {{{ proto void Mrloop::tcpServer( int port [, callable callback ] ) */
46+
PHP_METHOD(Mrloop, tcpServer)
5447
{
55-
php_mrloop_proc_readv(INTERNAL_FUNCTION_PARAM_PASSTHRU);
48+
php_mrloop_tcp_server_listen(INTERNAL_FUNCTION_PARAM_PASSTHRU);
5649
}
5750
/* }}} */
5851

59-
/* {{{ proto void Mrloop::pwritev( string command [, string contents [, callable callback ]] ) */
60-
PHP_METHOD(Mrloop, pwritev)
52+
/* {{{ proto array Mrloop::parseHttpRequest( string request [, int headerlimit = 100 ] ) */
53+
PHP_METHOD(Mrloop, parseHttpRequest)
6154
{
62-
php_mrloop_proc_writev(INTERNAL_FUNCTION_PARAM_PASSTHRU);
55+
php_mrloop_parse_http_request(INTERNAL_FUNCTION_PARAM_PASSTHRU);
6356
}
6457
/* }}} */
6558

66-
/* {{{ proto void Mrloop::fwritev( string file [, string contents [, ?int flags [, callable callback ]]] ) */
67-
PHP_METHOD(Mrloop, fwritev)
59+
/* {{{ proto array Mrloop::parseHttpResponse( string request [, int headerlimit = 100 ] ) */
60+
PHP_METHOD(Mrloop, parseHttpResponse)
6861
{
69-
php_mrloop_file_writev(INTERNAL_FUNCTION_PARAM_PASSTHRU);
62+
php_mrloop_parse_http_response(INTERNAL_FUNCTION_PARAM_PASSTHRU);
7063
}
7164
/* }}} */
7265

73-
/* {{{ proto void Mrloop::tcpServer( int port [, callable callback ] ) */
74-
PHP_METHOD(Mrloop, tcpServer)
66+
/* {{{ proto void Mrloop::addSignal( int signal [, callable callback ] ) */
67+
PHP_METHOD(Mrloop, addSignal)
7568
{
76-
php_mrloop_tcp_server_listen(INTERNAL_FUNCTION_PARAM_PASSTHRU);
69+
php_mrloop_add_signal(INTERNAL_FUNCTION_PARAM_PASSTHRU);
7770
}
7871
/* }}} */
7972

80-
/* {{{ proto array Mrloop::parseHttp( string request [, int headerlimit = 100 ] ) */
81-
PHP_METHOD(Mrloop, parseHttp)
73+
/* {{{ proto void Mrloop::addReadStream( resource stream [, ?int nbytes = null [, callable callback ]] ) */
74+
PHP_METHOD(Mrloop, addReadStream)
8275
{
83-
php_mrloop_http_parser(INTERNAL_FUNCTION_PARAM_PASSTHRU);
76+
php_mrloop_add_read_stream(INTERNAL_FUNCTION_PARAM_PASSTHRU);
8477
}
8578
/* }}} */
8679

87-
/* {{{ proto void Mrloop::addSignal( int signal [, callable callback ] ) */
88-
PHP_METHOD(Mrloop, addSignal)
80+
/* {{{ proto void Mrloop::addWriteStream( resource stream [, string contents [, callable callback ]] ) */
81+
PHP_METHOD(Mrloop, addWriteStream)
8982
{
90-
php_mrloop_add_signal(INTERNAL_FUNCTION_PARAM_PASSTHRU);
83+
php_mrloop_add_write_stream(INTERNAL_FUNCTION_PARAM_PASSTHRU);
9184
}
9285
/* }}} */
9386

0 commit comments

Comments
 (0)