+/* {{{ proto bool HttpRequestPool::valid()
+ Implements Iterator::valid(). */
+PHP_METHOD(HttpRequestPool, valid)
+{
+ NO_ARGS;
+
+ if (return_value_used) {
+ getObject(http_requestpool_object, obj);
+ RETURN_BOOL(obj->iterator.pos >= 0 && obj->iterator.pos < zend_llist_count(&obj->pool.handles));
+ }
+}
+/* }}} */
+
+/* {{{ proto HttpRequest HttpRequestPool::current()
+ Implements Iterator::current(). */
+PHP_METHOD(HttpRequestPool, current)
+{
+ NO_ARGS;
+
+ if (return_value_used) {
+ long pos = 0;
+ zval **current = NULL;
+ zend_llist_position lpos;
+ getObject(http_requestpool_object, obj);
+
+ if (obj->iterator.pos < zend_llist_count(&obj->pool.handles)) {
+ for ( current = zend_llist_get_first_ex(&obj->pool.handles, &lpos);
+ current && obj->iterator.pos != pos++;
+ current = zend_llist_get_next_ex(&obj->pool.handles, &lpos));
+ if (current) {
+ RETURN_OBJECT(*current, 1);
+ }
+ }
+ RETURN_NULL();
+ }
+}
+/* }}} */
+
+/* {{{ proto int HttpRequestPool::key()
+ Implements Iterator::key(). */
+PHP_METHOD(HttpRequestPool, key)
+{
+ NO_ARGS;
+
+ if (return_value_used) {
+ getObject(http_requestpool_object, obj);
+ RETURN_LONG(obj->iterator.pos);
+ }
+}
+/* }}} */
+
+/* {{{ proto void HttpRequestPool::next()
+ Implements Iterator::next(). */
+PHP_METHOD(HttpRequestPool, next)
+{
+ NO_ARGS {
+ getObject(http_requestpool_object, obj);
+ ++(obj->iterator.pos);
+ }
+}
+/* }}} */
+
+/* {{{ proto void HttpRequestPool::rewind()
+ Implements Iterator::rewind(). */
+PHP_METHOD(HttpRequestPool, rewind)
+{
+ NO_ARGS {
+ getObject(http_requestpool_object, obj);
+ obj->iterator.pos = 0;
+ }
+}
+/* }}} */
+
+/* {{{ proto int HttpRequestPool::count()
+ Implements Countable::count(). */
+PHP_METHOD(HttpRequestPool, count)
+{
+ NO_ARGS {
+ getObject(http_requestpool_object, obj);
+ RETURN_LONG((long) zend_llist_count(&obj->pool.handles));
+ }
+}
+/* }}} */
+
+/* {{{ proto array HttpRequestPool::getAttachedRequests()
+ Get attached HttpRequest objects. */
+PHP_METHOD(HttpRequestPool, getAttachedRequests)