ZEND_METHOD( appnetServer , on ) { size_t type_len,i,ret; char* type; zval *cb; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz", &type, &type_len, &cb ) == FAILURE) { return; } char *callback[APPNET_SERVER_CALLBACK_NUM] = { APPNET_EVENT_CONNECT, APPNET_EVENT_RECV, APPNET_EVENT_CLOSE, APPNET_EVENT_START, APPNET_EVENT_FINAL, APPNET_EVENT_TIMER }; for (i = 0; i < APPNET_SERVER_CALLBACK_NUM; i++) { if (strncasecmp(callback[i], type , type_len ) == 0) { ret = appnet_set_callback(i, cb TSRMLS_CC); break; } } if (ret < 0) { php_error_docref(NULL TSRMLS_CC, E_ERROR, "Unknown event types[%s]", type ); } }
ZEND_METHOD( appnetServer , on ) { size_t type_len,i,ret; char* type; zval *cb; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz", &type, &type_len, &cb ) == FAILURE) { return; } char *callback[APPNET_SERVER_CALLBACK_NUM] = { "connect", "receive", "close", "start", "final", "timer" }; for (i = 0; i < APPNET_SERVER_CALLBACK_NUM; i++) { if (strncasecmp(callback[i], type , type_len ) == 0) { ret = appnet_set_callback(i, cb TSRMLS_CC); break; } } if (ret < 0) { php_error_docref(NULL TSRMLS_CC, E_ERROR, "Unknown event types[%s]", type ); } }