2 +----------------------------------------------------------------------+
4 +----------------------------------------------------------------------+
5 | This source file is subject to version 3.0 of the PHP license, that |
6 | is bundled with this package in the file LICENSE, and is available |
7 | through the world-wide-web at http://www.php.net/license/3_0.txt. |
8 | If you did not receive a copy of the PHP license and are unable to |
9 | obtain it through the world-wide-web, please send a note to |
10 | license@php.net so we can mail you a copy immediately. |
11 +----------------------------------------------------------------------+
12 | Copyright (c) 2004-2005 Michael Wallner <mike@php.net> |
13 +----------------------------------------------------------------------+
24 #if defined(ZEND_ENGINE_2) && defined(HTTP_HAVE_CURL)
26 #include "php_http_std_defs.h"
27 #include "php_http_requestpool_object.h"
28 #include "php_http_request_pool_api.h"
31 # include <winsock2.h>
33 #include <curl/curl.h>
35 #define HTTP_BEGIN_ARGS(method, req_args) HTTP_BEGIN_ARGS_EX(HttpRequestPool, method, ZEND_RETURN_REFERENCE_AGNOSTIC, req_args)
36 #define HTTP_EMPTY_ARGS(method, ret_ref) HTTP_EMPTY_ARGS_EX(HttpRequestPool, method, ret_ref)
37 #define HTTP_REQPOOL_ME(method, visibility) PHP_ME(HttpRequestPool, method, HTTP_ARGS(HttpRequestPool, method), visibility)
39 HTTP_BEGIN_ARGS_AR(HttpRequestPool
, __construct
, 0, 0)
40 HTTP_ARG_OBJ(HttpRequest
, request0
, 0)
41 HTTP_ARG_OBJ(HttpRequest
, request1
, 0)
42 HTTP_ARG_OBJ(HttpRequest
, requestN
, 0)
45 HTTP_EMPTY_ARGS(__destruct
, 0);
46 HTTP_EMPTY_ARGS(reset
, 0);
48 HTTP_BEGIN_ARGS(attach
, 1)
49 HTTP_ARG_OBJ(HttpRequest
, request
, 0)
52 HTTP_BEGIN_ARGS(detach
, 1)
53 HTTP_ARG_OBJ(HttpRequest
, request
, 0)
56 HTTP_EMPTY_ARGS(send
, 0);
57 HTTP_EMPTY_ARGS(socketSend
, 0);
58 HTTP_EMPTY_ARGS(socketSelect
, 0);
59 HTTP_EMPTY_ARGS(socketRead
, 0);
62 #define http_requestpool_object_declare_default_properties() _http_requestpool_object_declare_default_properties(TSRMLS_C)
63 static inline void _http_requestpool_object_declare_default_properties(TSRMLS_D
);
65 zend_class_entry
*http_requestpool_object_ce
;
66 zend_function_entry http_requestpool_object_fe
[] = {
67 HTTP_REQPOOL_ME(__construct
, ZEND_ACC_PUBLIC
|ZEND_ACC_CTOR
)
68 HTTP_REQPOOL_ME(__destruct
, ZEND_ACC_PUBLIC
|ZEND_ACC_DTOR
)
69 HTTP_REQPOOL_ME(attach
, ZEND_ACC_PUBLIC
)
70 HTTP_REQPOOL_ME(detach
, ZEND_ACC_PUBLIC
)
71 HTTP_REQPOOL_ME(send
, ZEND_ACC_PUBLIC
)
72 HTTP_REQPOOL_ME(reset
, ZEND_ACC_PUBLIC
)
74 HTTP_REQPOOL_ME(socketSend
, ZEND_ACC_PROTECTED
)
75 HTTP_REQPOOL_ME(socketSelect
, ZEND_ACC_PROTECTED
)
76 HTTP_REQPOOL_ME(socketRead
, ZEND_ACC_PROTECTED
)
80 static zend_object_handlers http_requestpool_object_handlers
;
82 void _http_requestpool_object_init(INIT_FUNC_ARGS
)
84 HTTP_REGISTER_CLASS_EX(HttpRequestPool
, http_requestpool_object
, NULL
, 0);
87 zend_object_value
_http_requestpool_object_new(zend_class_entry
*ce TSRMLS_DC
)
90 http_requestpool_object
*o
;
92 o
= ecalloc(1, sizeof(http_requestpool_object
));
95 http_request_pool_init(&o
->pool
);
97 ALLOC_HASHTABLE(OBJ_PROP(o
));
98 zend_hash_init(OBJ_PROP(o
), 0, NULL
, ZVAL_PTR_DTOR
, 0);
99 zend_hash_copy(OBJ_PROP(o
), &ce
->default_properties
, (copy_ctor_func_t
) zval_add_ref
, NULL
, sizeof(zval
*));
101 ov
.handle
= zend_objects_store_put(o
, (zend_objects_store_dtor_t
) zend_objects_destroy_object
, http_requestpool_object_free
, NULL TSRMLS_CC
);
102 ov
.handlers
= &http_requestpool_object_handlers
;
107 static inline void _http_requestpool_object_declare_default_properties(TSRMLS_D
)
109 zend_class_entry
*ce
= http_requestpool_object_ce
;
111 DCL_PROP_N(PROTECTED
, pool
);
114 void _http_requestpool_object_free(zend_object
*object TSRMLS_DC
)
116 http_requestpool_object
*o
= (http_requestpool_object
*) object
;
119 zend_hash_destroy(OBJ_PROP(o
));
120 FREE_HASHTABLE(OBJ_PROP(o
));
122 http_request_pool_dtor(&o
->pool
);
126 #endif /* ZEND_ENGINE_2 && HTTP_HAVE_CURL */
133 * vim600: noet sw=4 ts=4 fdm=marker
134 * vim<600: noet sw=4 ts=4