blob: 492ac067398a728ac1d6e0e596298b323e97d846 [file] [log] [blame]
mlumishb892a272014-12-09 16:28:23 -08001#include "call.h"
2#include "channel.h"
3#include "server.h"
4#include "completion_queue.h"
5#include "event.h"
6#include "timeval.h"
7#include "credentials.h"
8#include "server_credentials.h"
9
10#ifdef HAVE_CONFIG_H
11#include "config.h"
12#endif
13
14#include "php.h"
15#include "php_ini.h"
16#include "ext/standard/info.h"
17#include "php_grpc.h"
18
Craig Tillerb5dcec52015-01-13 11:13:42 -080019// ZEND_DECLARE_MODULE_GLOBALS(grpc)
mlumishb892a272014-12-09 16:28:23 -080020
21/* {{{ grpc_functions[]
22 *
23 * Every user visible function must have an entry in grpc_functions[].
24 */
25const zend_function_entry grpc_functions[] = {
Craig Tillerb5dcec52015-01-13 11:13:42 -080026 PHP_FE_END /* Must be the last line in grpc_functions[] */
mlumishb892a272014-12-09 16:28:23 -080027};
28/* }}} */
29
30/* {{{ grpc_module_entry
31 */
32zend_module_entry grpc_module_entry = {
33#if ZEND_MODULE_API_NO >= 20010901
34 STANDARD_MODULE_HEADER,
35#endif
murgatroid991d894522015-01-16 09:57:05 -080036 "grpc", grpc_functions, PHP_MINIT(grpc),
37 PHP_MSHUTDOWN(grpc), NULL, NULL,
mlumishb892a272014-12-09 16:28:23 -080038 PHP_MINFO(grpc),
39#if ZEND_MODULE_API_NO >= 20010901
40 PHP_GRPC_VERSION,
41#endif
Craig Tillerb5dcec52015-01-13 11:13:42 -080042 STANDARD_MODULE_PROPERTIES};
mlumishb892a272014-12-09 16:28:23 -080043/* }}} */
44
45#ifdef COMPILE_DL_GRPC
46ZEND_GET_MODULE(grpc)
47#endif
48
49/* {{{ PHP_INI
50 */
51/* Remove comments and fill if you need to have entries in php.ini
52PHP_INI_BEGIN()
Craig Tillerb5dcec52015-01-13 11:13:42 -080053 STD_PHP_INI_ENTRY("grpc.global_value", "42", PHP_INI_ALL, OnUpdateLong,
54global_value, zend_grpc_globals, grpc_globals)
55 STD_PHP_INI_ENTRY("grpc.global_string", "foobar", PHP_INI_ALL,
56OnUpdateString, global_string, zend_grpc_globals, grpc_globals)
mlumishb892a272014-12-09 16:28:23 -080057PHP_INI_END()
58*/
59/* }}} */
60
61/* {{{ php_grpc_init_globals
62 */
63/* Uncomment this function if you have INI entries
64static void php_grpc_init_globals(zend_grpc_globals *grpc_globals)
65{
66 grpc_globals->global_value = 0;
67 grpc_globals->global_string = NULL;
68}
69*/
70/* }}} */
71
72/* {{{ PHP_MINIT_FUNCTION
73 */
Craig Tillerb5dcec52015-01-13 11:13:42 -080074PHP_MINIT_FUNCTION(grpc) {
75 /* If you have INI entries, uncomment these lines
76 REGISTER_INI_ENTRIES();
77 */
78 /* Register call error constants */
79 grpc_init();
80 REGISTER_LONG_CONSTANT("Grpc\\CALL_OK", GRPC_CALL_OK, CONST_CS);
81 REGISTER_LONG_CONSTANT("Grpc\\CALL_ERROR", GRPC_CALL_ERROR, CONST_CS);
82 REGISTER_LONG_CONSTANT("Grpc\\CALL_ERROR_NOT_ON_SERVER",
83 GRPC_CALL_ERROR_NOT_ON_SERVER, CONST_CS);
84 REGISTER_LONG_CONSTANT("Grpc\\CALL_ERROR_NOT_ON_CLIENT",
85 GRPC_CALL_ERROR_NOT_ON_CLIENT, CONST_CS);
86 REGISTER_LONG_CONSTANT("Grpc\\CALL_ERROR_ALREADY_INVOKED",
87 GRPC_CALL_ERROR_ALREADY_INVOKED, CONST_CS);
88 REGISTER_LONG_CONSTANT("Grpc\\CALL_ERROR_NOT_INVOKED",
89 GRPC_CALL_ERROR_NOT_INVOKED, CONST_CS);
90 REGISTER_LONG_CONSTANT("Grpc\\CALL_ERROR_ALREADY_FINISHED",
91 GRPC_CALL_ERROR_ALREADY_FINISHED, CONST_CS);
92 REGISTER_LONG_CONSTANT("Grpc\\CALL_ERROR_TOO_MANY_OPERATIONS",
93 GRPC_CALL_ERROR_TOO_MANY_OPERATIONS, CONST_CS);
94 REGISTER_LONG_CONSTANT("Grpc\\CALL_ERROR_INVALID_FLAGS",
95 GRPC_CALL_ERROR_INVALID_FLAGS, CONST_CS);
mlumishb892a272014-12-09 16:28:23 -080096
Craig Tillerb5dcec52015-01-13 11:13:42 -080097 /* Register op error constants */
98 REGISTER_LONG_CONSTANT("Grpc\\OP_OK", GRPC_OP_OK, CONST_CS);
99 REGISTER_LONG_CONSTANT("Grpc\\OP_ERROR", GRPC_OP_ERROR, CONST_CS);
mlumishb892a272014-12-09 16:28:23 -0800100
Craig Tillerb5dcec52015-01-13 11:13:42 -0800101 /* Register flag constants */
102 REGISTER_LONG_CONSTANT("Grpc\\WRITE_BUFFER_HINT", GRPC_WRITE_BUFFER_HINT,
103 CONST_CS);
104 REGISTER_LONG_CONSTANT("Grpc\\WRITE_NO_COMPRESS", GRPC_WRITE_NO_COMPRESS,
105 CONST_CS);
mlumishb892a272014-12-09 16:28:23 -0800106
Craig Tillerb5dcec52015-01-13 11:13:42 -0800107 /* Register completion type constants */
108 REGISTER_LONG_CONSTANT("Grpc\\QUEUE_SHUTDOWN", GRPC_QUEUE_SHUTDOWN, CONST_CS);
109 REGISTER_LONG_CONSTANT("Grpc\\READ", GRPC_READ, CONST_CS);
Craig Tillerb5dcec52015-01-13 11:13:42 -0800110 REGISTER_LONG_CONSTANT("Grpc\\FINISH_ACCEPTED", GRPC_FINISH_ACCEPTED,
111 CONST_CS);
murgatroid991d894522015-01-16 09:57:05 -0800112 REGISTER_LONG_CONSTANT("Grpc\\WRITE_ACCEPTED", GRPC_WRITE_ACCEPTED, CONST_CS);
Craig Tillerb5dcec52015-01-13 11:13:42 -0800113 REGISTER_LONG_CONSTANT("Grpc\\CLIENT_METADATA_READ",
114 GRPC_CLIENT_METADATA_READ, CONST_CS);
115 REGISTER_LONG_CONSTANT("Grpc\\FINISHED", GRPC_FINISHED, CONST_CS);
116 REGISTER_LONG_CONSTANT("Grpc\\SERVER_RPC_NEW", GRPC_SERVER_RPC_NEW, CONST_CS);
mlumishb892a272014-12-09 16:28:23 -0800117
Craig Tillerb5dcec52015-01-13 11:13:42 -0800118 /* Register status constants */
119 REGISTER_LONG_CONSTANT("Grpc\\STATUS_OK", GRPC_STATUS_OK, CONST_CS);
120 REGISTER_LONG_CONSTANT("Grpc\\STATUS_CANCELLED", GRPC_STATUS_CANCELLED,
121 CONST_CS);
122 REGISTER_LONG_CONSTANT("Grpc\\STATUS_UNKNOWN", GRPC_STATUS_UNKNOWN, CONST_CS);
123 REGISTER_LONG_CONSTANT("Grpc\\STATUS_INVALID_ARGUMENT",
124 GRPC_STATUS_INVALID_ARGUMENT, CONST_CS);
125 REGISTER_LONG_CONSTANT("Grpc\\STATUS_DEADLINE_EXCEEDED",
126 GRPC_STATUS_DEADLINE_EXCEEDED, CONST_CS);
127 REGISTER_LONG_CONSTANT("Grpc\\STATUS_NOT_FOUND", GRPC_STATUS_NOT_FOUND,
128 CONST_CS);
129 REGISTER_LONG_CONSTANT("Grpc\\STATUS_ALREADY_EXISTS",
130 GRPC_STATUS_ALREADY_EXISTS, CONST_CS);
131 REGISTER_LONG_CONSTANT("Grpc\\STATUS_PERMISSION_DENIED",
132 GRPC_STATUS_PERMISSION_DENIED, CONST_CS);
133 REGISTER_LONG_CONSTANT("Grpc\\STATUS_UNAUTHENTICATED",
134 GRPC_STATUS_UNAUTHENTICATED, CONST_CS);
135 REGISTER_LONG_CONSTANT("Grpc\\STATUS_RESOURCE_EXHAUSTED",
136 GRPC_STATUS_RESOURCE_EXHAUSTED, CONST_CS);
137 REGISTER_LONG_CONSTANT("Grpc\\STATUS_FAILED_PRECONDITION",
138 GRPC_STATUS_FAILED_PRECONDITION, CONST_CS);
139 REGISTER_LONG_CONSTANT("Grpc\\STATUS_ABORTED", GRPC_STATUS_ABORTED, CONST_CS);
140 REGISTER_LONG_CONSTANT("Grpc\\STATUS_OUT_OF_RANGE", GRPC_STATUS_OUT_OF_RANGE,
141 CONST_CS);
142 REGISTER_LONG_CONSTANT("Grpc\\STATUS_UNIMPLEMENTED",
143 GRPC_STATUS_UNIMPLEMENTED, CONST_CS);
144 REGISTER_LONG_CONSTANT("Grpc\\STATUS_INTERNAL", GRPC_STATUS_INTERNAL,
145 CONST_CS);
146 REGISTER_LONG_CONSTANT("Grpc\\STATUS_UNAVAILABLE", GRPC_STATUS_UNAVAILABLE,
147 CONST_CS);
148 REGISTER_LONG_CONSTANT("Grpc\\STATUS_DATA_LOSS", GRPC_STATUS_DATA_LOSS,
149 CONST_CS);
mlumishb892a272014-12-09 16:28:23 -0800150
Craig Tillerb5dcec52015-01-13 11:13:42 -0800151 grpc_init_call(TSRMLS_C);
152 grpc_init_channel(TSRMLS_C);
153 grpc_init_server(TSRMLS_C);
154 grpc_init_completion_queue(TSRMLS_C);
155 grpc_init_timeval(TSRMLS_C);
156 grpc_init_credentials(TSRMLS_C);
157 grpc_init_server_credentials(TSRMLS_C);
158 return SUCCESS;
mlumishb892a272014-12-09 16:28:23 -0800159}
160/* }}} */
161
162/* {{{ PHP_MSHUTDOWN_FUNCTION
163 */
Craig Tillerb5dcec52015-01-13 11:13:42 -0800164PHP_MSHUTDOWN_FUNCTION(grpc) {
165 /* uncomment this line if you have INI entries
166 UNREGISTER_INI_ENTRIES();
167 */
168 grpc_shutdown_timeval(TSRMLS_C);
169 grpc_shutdown();
170 return SUCCESS;
mlumishb892a272014-12-09 16:28:23 -0800171}
172/* }}} */
173
174/* {{{ PHP_MINFO_FUNCTION
175 */
Craig Tillerb5dcec52015-01-13 11:13:42 -0800176PHP_MINFO_FUNCTION(grpc) {
177 php_info_print_table_start();
178 php_info_print_table_header(2, "grpc support", "enabled");
179 php_info_print_table_end();
mlumishb892a272014-12-09 16:28:23 -0800180
Craig Tillerb5dcec52015-01-13 11:13:42 -0800181 /* Remove comments if you have entries in php.ini
182 DISPLAY_INI_ENTRIES();
183 */
mlumishb892a272014-12-09 16:28:23 -0800184}
185/* }}} */
186/* The previous line is meant for vim and emacs, so it can correctly fold and
187 unfold functions in source code. See the corresponding marks just before
188 function definition, where the functions purpose is also documented. Please
189 follow this convention for the convenience of others editing your code.
190*/
191
mlumishb892a272014-12-09 16:28:23 -0800192/*
193 * Local variables:
194 * tab-width: 4
195 * c-basic-offset: 4
196 * End:
197 * vim600: noet sw=4 ts=4 fdm=marker
198 * vim<600: noet sw=4 ts=4
199 */