X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_requestpool_object.c;h=03fee88c575ca09a40ea5726d71cc3ffefd93d5e;hp=5edc073c0e0be75aafd88e5cbb48227f7bf70a43;hb=ea0d9948275e4e369633c53c59340db3d3df34d3;hpb=85a0db601dd0f1041b038c6513c6b30f8b2304cf diff --git a/http_requestpool_object.c b/http_requestpool_object.c index 5edc073..03fee88 100644 --- a/http_requestpool_object.c +++ b/http_requestpool_object.c @@ -50,7 +50,9 @@ HTTP_END_ARGS; HTTP_EMPTY_ARGS(send); HTTP_EMPTY_ARGS(socketPerform); -HTTP_EMPTY_ARGS(socketSelect); +HTTP_BEGIN_ARGS(socketSelect, 0) + HTTP_ARG_VAL(timeout, 0) +HTTP_END_ARGS; HTTP_EMPTY_ARGS(valid); HTTP_EMPTY_ARGS(current); @@ -277,14 +279,23 @@ PHP_METHOD(HttpRequestPool, socketPerform) } /* }}} */ -/* {{{ proto protected bool HttpRequestPool::socketSelect() */ +/* {{{ proto protected bool HttpRequestPool::socketSelect([double timeout]) */ PHP_METHOD(HttpRequestPool, socketSelect) { + double timeout = 0; + struct timeval custom_timeout, *custom_timeout_ptr = NULL; getObject(http_requestpool_object, obj); - NO_ARGS; + if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|d", &timeout)) { + RETURN_FALSE; + } + if (ZEND_NUM_ARGS() && timeout > 0) { + custom_timeout.tv_sec = (time_t) timeout; + custom_timeout.tv_usec = HTTP_USEC(timeout) % HTTP_MCROSEC; + custom_timeout_ptr = &custom_timeout; + } - RETURN_SUCCESS(http_request_pool_select(&obj->pool)); + RETURN_SUCCESS(http_request_pool_select_ex(&obj->pool, custom_timeout_ptr)); } /* }}} */ @@ -407,7 +418,9 @@ PHP_METHOD(HttpRequestPool, getFinishedRequests) PHP_METHOD(HttpRequestPool, enablePipelining) { zend_bool enable = 1; +#if defined(HAVE_CURL_MULTI_SETOPT) && HTTP_CURL_VERSION(7,16,0) getObject(http_requestpool_object, obj); +#endif if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|b", &enable)) { RETURN_FALSE; @@ -426,7 +439,9 @@ PHP_METHOD(HttpRequestPool, enablePipelining) PHP_METHOD(HttpRequestPool, enableEvents) { zend_bool enable = 1; +#if defined(HTTP_HAVE_EVENT) getObject(http_requestpool_object, obj); +#endif if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|b", &enable)) { #if defined(HTTP_HAVE_EVENT)