X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_requestpool_object.c;fp=http_requestpool_object.c;h=ff8f75d4431e073faec37dffefa09a240998935a;hp=69c3f9616a0ade832514f9e38e153d90d61c2655;hb=2eeaaf92d18d81751c5a52dcc7c1dbdfbcdfc28c;hpb=868f439c22372956836fe7d561d2adc69feea809 diff --git a/http_requestpool_object.c b/http_requestpool_object.c index 69c3f96..ff8f75d 100644 --- a/http_requestpool_object.c +++ b/http_requestpool_object.c @@ -67,6 +67,10 @@ HTTP_EMPTY_ARGS(count); HTTP_EMPTY_ARGS(getAttachedRequests); HTTP_EMPTY_ARGS(getFinishedRequests); +HTTP_BEGIN_ARGS(enablePipelining, 0) + HTTP_ARG_VAL(enable, 0) +HTTP_END_ARGS; + zend_class_entry *http_requestpool_object_ce; zend_function_entry http_requestpool_object_fe[] = { HTTP_REQPOOL_ME(__construct, ZEND_ACC_PUBLIC|ZEND_ACC_CTOR) @@ -91,6 +95,8 @@ zend_function_entry http_requestpool_object_fe[] = { HTTP_REQPOOL_ME(getAttachedRequests, ZEND_ACC_PUBLIC) HTTP_REQPOOL_ME(getFinishedRequests, ZEND_ACC_PUBLIC) + + HTTP_REQPOOL_ME(enablePipelining, ZEND_ACC_PUBLIC) EMPTY_FUNCTION_ENTRY }; @@ -517,6 +523,29 @@ PHP_METHOD(HttpRequestPool, getFinishedRequests) } /* }}} */ +/* {{{ proto bool HttpRequest::enablePiplelinig([bool enable = true]) + * + * Enables pipelining support for all attached requests if support in libcurl is given. + * + * Returns TRUE on success, or FALSE on failure. + */ +PHP_METHOD(HttpRequestPool, enablePipelining) +{ + zend_bool enable = 1; + getObject(http_requestpool_object, obj); + + if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|b", &enable)) { + RETURN_FALSE; + } +#if defined(HAVE_CURL_MULTI_SETOPT) && HTTP_CURL_VERSION(7,16,0) + if (CURLM_OK == curl_multi_setopt(obj->pool.ch, CURLMOPT_PIPELINING, (long) enable)) { + RETURN_TRUE; + } +#endif + RETURN_FALSE; +} +/* }}} */ + #endif /* ZEND_ENGINE_2 && HTTP_HAVE_CURL */ /*