X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_methods.c;h=cf1fb9e0ebd96c812e06eb5ebe84ab6576c302e0;hp=053fce7b232ee97845beb5a62b98d7bcbbbd38ff;hb=d07df3421e591d06d0bc000fabf49d6987a8bcd5;hpb=b272c1e03de58ff0c01f78421b824c7f45d43959 diff --git a/http_methods.c b/http_methods.c index 053fce7..cf1fb9e 100644 --- a/http_methods.c +++ b/http_methods.c @@ -2125,15 +2125,13 @@ PHP_METHOD(HttpRequest, send) } if (SUCCESS == (status = http_request_object_requesthandler(obj, getThis(), &body))) { - zval *info = GET_PROP(obj, responseInfo); - status = http_request_exec(obj->ch, Z_ARRVAL_P(info)); - SET_PROP(obj, responseInfo, info); + status = http_request_exec(obj->ch, NULL); } http_request_body_dtor(&body); /* final data handling */ if (SUCCESS == status) { - status = http_request_object_responsehandler(obj, getThis(), NULL); + status = http_request_object_responsehandler(obj, getThis()); } SET_EH_NORMAL(); @@ -2143,7 +2141,7 @@ PHP_METHOD(HttpRequest, send) /* {{{ HttpRequestPool */ -/* {{{ proto void HttpRequestPool::__construct(void) +/* {{{ proto void HttpRequestPool::__construct() * * Instantiate a new HttpRequestPool object. */ @@ -2153,13 +2151,31 @@ PHP_METHOD(HttpRequestPool, __construct) } /* }}} */ +/* {{{ proto void HttpRequestPool::__destruct() + * + * Clean up HttpRequestPool object. + */ PHP_METHOD(HttpRequestPool, __destruct) { getObject(http_requestpool_object, obj); - + + NO_ARGS; + + http_request_pool_detach_all(&obj->pool); +} +/* }}} */ + +/* {{{ proto void HttpRequestPool::reset() + * + * Detach all attached HttpRequest objects. + */ +PHP_METHOD(HttpRequestPool, reset) +{ + getObject(http_requestpool_object, obj); + NO_ARGS; - - http_requestpool_object_ondestruct(&obj->pool); + + http_request_pool_detach_all(&obj->pool); } /* {{{ proto bool HttpRequestPool::attach(HttpRequest request) @@ -2215,6 +2231,59 @@ PHP_METHOD(HttpRequestPool, send) } /* }}} */ +/* {{{ proto protected bool HttpRequestPool::socketSend() + * + * Usage: + *
+ * socketSend()) {
+ *         do_something_else();
+ *         if (!$pool->socketSelect()) {
+ *             die('Socket error');
+ *         }
+ *     }
+ *     $pool->socketRead();
+ * ?>
+ * 
+ */ +PHP_METHOD(HttpRequestPool, socketSend) +{ + getObject(http_requestpool_object, obj); + + NO_ARGS; + + RETURN_BOOL(0 < http_request_pool_perform(&obj->pool)); +} +/* }}} */ + +/* {{{ proto protected bool HttpRequestPool::socketSelect() + * + * See HttpRequestPool::socketSend(). + */ +PHP_METHOD(HttpRequestPool, socketSelect) +{ + getObject(http_requestpool_object, obj); + + NO_ARGS; + + RETURN_SUCCESS(http_request_pool_select(&obj->pool)); +} +/* }}} */ + +/* {{{ proto protected void HttpRequestPool::socketRead() + * + * See HttpRequestPool::socketSend(). + */ +PHP_METHOD(HttpRequestPool, socketRead) +{ + getObject(http_requestpool_object, obj); + + NO_ARGS; + + zend_llist_apply(&obj->pool.handles, (llist_apply_func_t) http_request_pool_responsehandler TSRMLS_CC); +} +/* }}} */ + /* }}} */ /* }}} */