|
18 | 18 | #include "php_network.h" |
19 | 19 | #include "php_poll.h" |
20 | 20 | #include "io_poll_arginfo.h" |
| 21 | +#include "io_poll_decl.h" |
21 | 22 |
|
22 | 23 | /* Class entries */ |
23 | 24 | static zend_class_entry *php_io_poll_backend_class_entry; |
@@ -85,26 +86,7 @@ static inline void php_io_poll_throw_failed_operation( |
85 | 86 | /* Event enum to bit mask mapping */ |
86 | 87 | static uint32_t php_io_poll_event_enum_to_bit(zend_object *event_enum) |
87 | 88 | { |
88 | | - zval *case_name = zend_enum_fetch_case_name(event_enum); |
89 | | - const char *name = Z_STRVAL_P(case_name); |
90 | | - |
91 | | - if (strcmp(name, "Read") == 0) { |
92 | | - return PHP_POLL_READ; |
93 | | - } else if (strcmp(name, "Write") == 0) { |
94 | | - return PHP_POLL_WRITE; |
95 | | - } else if (strcmp(name, "Error") == 0) { |
96 | | - return PHP_POLL_ERROR; |
97 | | - } else if (strcmp(name, "HangUp") == 0) { |
98 | | - return PHP_POLL_HUP; |
99 | | - } else if (strcmp(name, "ReadHangUp") == 0) { |
100 | | - return PHP_POLL_RDHUP; |
101 | | - } else if (strcmp(name, "OneShot") == 0) { |
102 | | - return PHP_POLL_ONESHOT; |
103 | | - } else if (strcmp(name, "EdgeTriggered") == 0) { |
104 | | - return PHP_POLL_ET; |
105 | | - } |
106 | | - |
107 | | - return 0; |
| 89 | + return 1 << (zend_enum_fetch_case_id(event_enum) - 1); |
108 | 90 | } |
109 | 91 |
|
110 | 92 | static uint32_t php_io_poll_event_enums_to_events(zval *event_enums) |
@@ -179,24 +161,7 @@ static zend_result php_io_poll_events_to_event_enums(uint32_t events, zval *even |
179 | 161 | /* Backend enum name to backend type mapping */ |
180 | 162 | static php_poll_backend_type php_io_poll_backend_enum_to_type(zend_object *backend_enum) |
181 | 163 | { |
182 | | - zval *case_name = zend_enum_fetch_case_name(backend_enum); |
183 | | - const char *name = Z_STRVAL_P(case_name); |
184 | | - |
185 | | - if (strcmp(name, "Auto") == 0) { |
186 | | - return PHP_POLL_BACKEND_AUTO; |
187 | | - } else if (strcmp(name, "Poll") == 0) { |
188 | | - return PHP_POLL_BACKEND_POLL; |
189 | | - } else if (strcmp(name, "Epoll") == 0) { |
190 | | - return PHP_POLL_BACKEND_EPOLL; |
191 | | - } else if (strcmp(name, "Kqueue") == 0) { |
192 | | - return PHP_POLL_BACKEND_KQUEUE; |
193 | | - } else if (strcmp(name, "EventPorts") == 0) { |
194 | | - return PHP_POLL_BACKEND_EVENTPORT; |
195 | | - } else if (strcmp(name, "WSAPoll") == 0) { |
196 | | - return PHP_POLL_BACKEND_WSAPOLL; |
197 | | - } |
198 | | - |
199 | | - return PHP_POLL_BACKEND_AUTO; |
| 164 | + return zend_enum_fetch_case_id(backend_enum) - 2; |
200 | 165 | } |
201 | 166 |
|
202 | 167 | static const char *php_io_poll_backend_type_to_name(php_poll_backend_type type) |
|
0 commit comments