PHP_METHOD(HttpRequest, setOptions)
{
char *key = NULL;
- long idx = 0;
+ ulong idx = 0;
zval *opts, *old_opts, **opt;
getObject(http_request_object, obj);
getObject(http_request_object, obj);
message = GET_PROP(obj, responseMessage);
- Z_TYPE_P(return_value) = IS_OBJECT;
- return_value->is_ref = 1;
- return_value->value.obj = message->value.obj;
- zval_add_ref(&return_value);
+ if (Z_TYPE_P(message) == IS_OBJECT) {
+ RETVAL_OBJECT(message);
+ } else {
+ RETURN_NULL();
+ }
}
}
+/* }}} */
/* {{{ proto bool HttpRequest::send()
*
/* {{{ HttpRequestPool */
-/* {{{ proto void HttpRequestPool::__construct()
+/* {{{ proto void HttpRequestPool::__construct([HttpRequest request[, ...]])
*
- * Instantiate a new HttpRequestPool object.
+ * Instantiate a new HttpRequestPool object. An HttpRequestPool is
+ * able to send several HttpRequests in parallel.
+ *
+ * Example:
+ * <pre>
+ * <?php
+ * $urls = array('www.php.net', 'pecl.php.net', 'pear.php.net')
+ * $pool = new HttpRequestPool;
+ * foreach ($urls as $url) {
+ * $req[$url] = new HttpRequest("http://$url", HTTP_HEAD);
+ * $pool->attach($req[$url]);
+ * }
+ * $pool->send();
+ * foreach ($urls as $url) {
+ * printf("%s (%s) is %s\n",
+ * $url, $req[$url]->getResponseInfo('effective_url'),
+ * $r->getResponseCode() == 200 ? 'alive' : 'not alive'
+ * );
+ * }
+ * ?>
+ * </pre>
*/
PHP_METHOD(HttpRequestPool, __construct)
{
- NO_ARGS;
+ int argc = ZEND_NUM_ARGS();
+ zval ***argv = safe_emalloc(argc, sizeof(zval *), 0);
+ getObject(http_requestpool_object, obj);
+
+ if (SUCCESS == zend_get_parameters_array_ex(argc, argv)) {
+ int i;
+
+ for (i = 0; i < argc; ++i) {
+ if (Z_TYPE_PP(argv[i]) == IS_OBJECT && instanceof_function(Z_OBJCE_PP(argv[i]), http_request_object_ce TSRMLS_CC)) {
+ http_request_pool_attach(&obj->pool, *(argv[i]));
+ }
+ }
+ }
+ efree(argv);
}
/* }}} */
NO_ARGS;
- //http_request_pool_detach_all(&obj->pool);
+ http_request_pool_detach_all(&obj->pool);
}
/* }}} */
*/
PHP_METHOD(HttpRequestPool, send)
{
+ STATUS status;
getObject(http_requestpool_object, obj);
NO_ARGS;
- RETURN_SUCCESS(http_request_pool_send(&obj->pool));
+ SET_EH_THROW_HTTP();
+ status = http_request_pool_send(&obj->pool);
+ SET_EH_NORMAL();
+
+ RETURN_SUCCESS(status);
}
/* }}} */
* vim600: noet sw=4 ts=4 fdm=marker
* vim<600: noet sw=4 ts=4
*/
+