00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef AXIS2_HTTP_SIMPLE_REQUEST_H
00018 #define AXIS2_HTTP_SIMPLE_REQUEST_H
00019
00031 #include <axis2_const.h>
00032 #include <axis2_defines.h>
00033 #include <axis2_env.h>
00034 #include <axis2_http_request_line.h>
00035 #include <axis2_http_header.h>
00036 #include <axis2_stream.h>
00037 #include <axis2_array_list.h>
00038
00039
00040 #ifdef __cplusplus
00041 extern "C"
00042 {
00043 #endif
00044
00046 typedef struct axis2_http_simple_request_ops
00047 axis2_http_simple_request_ops_t;
00049 typedef struct axis2_http_simple_request axis2_http_simple_request_t;
00050
00055 struct axis2_http_simple_request_ops
00056 {
00061 axis2_http_request_line_t *(AXIS2_CALL *
00062 get_request_line)(
00063 const axis2_http_simple_request_t *simple_request,
00064 const axis2_env_t *env);
00065
00072 axis2_status_t (AXIS2_CALL *
00073 set_request_line)(
00074 axis2_http_simple_request_t *simple_request,
00075 const axis2_env_t *env,
00076 axis2_http_request_line_t *request_line);
00077
00083 axis2_bool_t (AXIS2_CALL *
00084 contains_header)(
00085 axis2_http_simple_request_t *simple_request,
00086 const axis2_env_t *env,
00087 const axis2_char_t *name);
00088
00093 axis2_array_list_t *(AXIS2_CALL *
00094 get_headers)(
00095 const axis2_http_simple_request_t *simple_request,
00096 const axis2_env_t *env);
00097
00103 axis2_http_header_t *(AXIS2_CALL *
00104 get_first_header)(
00105 const axis2_http_simple_request_t *simple_request,
00106 const axis2_env_t *env,
00107 const axis2_char_t *str);
00108
00115 axis2_status_t (AXIS2_CALL *
00116 remove_headers)(
00117 axis2_http_simple_request_t *simple_request,
00118 const axis2_env_t *env,
00119 const axis2_char_t *str);
00120
00127 axis2_status_t (AXIS2_CALL *
00128 add_header)(
00129 axis2_http_simple_request_t *simple_request,
00130 const axis2_env_t *env,
00131 axis2_http_header_t *header);
00132
00137 const axis2_char_t *(AXIS2_CALL *
00138 get_content_type)(
00139 const axis2_http_simple_request_t *simple_request,
00140 const axis2_env_t *env);
00141
00146 const axis2_char_t *(AXIS2_CALL *
00147 get_charset)(
00148 const axis2_http_simple_request_t *simple_request,
00149 const axis2_env_t *env);
00150
00155 axis2_ssize_t (AXIS2_CALL *
00156 get_content_length)(
00157 const axis2_http_simple_request_t *simple_request,
00158 const axis2_env_t *env);
00159
00164 axis2_stream_t *(AXIS2_CALL *
00165 get_body)(
00166 const axis2_http_simple_request_t *simple_request,
00167 const axis2_env_t *env);
00168
00174 axis2_ssize_t (AXIS2_CALL *
00175 get_body_bytes)(
00176 const axis2_http_simple_request_t *simple_request,
00177 const axis2_env_t *env,
00178 char **buf);
00179
00186 axis2_status_t (AXIS2_CALL *
00187 set_body_string)(
00188 axis2_http_simple_request_t *simple_request,
00189 const axis2_env_t *env,
00190 axis2_char_t *str);
00191
00197 axis2_status_t (AXIS2_CALL *
00198 free)(
00199 axis2_http_simple_request_t *simple_request,
00200 const axis2_env_t *env);
00201
00202 };
00203
00207 struct axis2_http_simple_request
00208 {
00210 axis2_http_simple_request_ops_t *ops;
00211 };
00212
00220 AXIS2_EXTERN axis2_http_simple_request_t *AXIS2_CALL
00221 axis2_http_simple_request_create (
00222 const axis2_env_t *env,
00223 axis2_http_request_line_t *request_line,
00224 axis2_http_header_t **http_headers,
00225 axis2_ssize_t http_hdr_count,
00226 axis2_stream_t *content);
00227
00228
00229
00232 #define AXIS2_HTTP_SIMPLE_REQUEST_GET_REQUEST_LINE(simple_request, env) \
00233 ((simple_request)->ops->get_request_line\
00234 (simple_request, env))
00235
00238 #define AXIS2_HTTP_SIMPLE_REQUEST_SET_REQUEST_LINE\
00239 (simple_request, env, request_line) \
00240 ((simple_request)->ops->set_request_line\
00241 (simple_request, env, request_line))
00242
00245 #define AXIS2_HTTP_SIMPLE_REQUEST_CONTAINS_HEADER(simple_request, env, name)\
00246 ((simple_request)->ops->contains_header\
00247 (simple_request, env, name))
00248
00251 #define AXIS2_HTTP_SIMPLE_REQUEST_GET_HEADERS(simple_request, env)\
00252 ((simple_request)->ops->get_headers(simple_request, env))
00253
00256 #define AXIS2_HTTP_SIMPLE_REQUEST_GET_FIRST_HEADER(simple_request, env, str) \
00257 ((simple_request)->ops->get_first_header\
00258 (simple_request, env, str))
00259
00262 #define AXIS2_HTTP_SIMPLE_REQUEST_REMOVE_HEADERS(simple_request, env, str) \
00263 ((simple_request)->ops->remove_headers\
00264 (simple_request, env, str))
00265
00268 #define AXIS2_HTTP_SIMPLE_REQUEST_ADD_HEADER(simple_request, env, header) \
00269 ((simple_request)->ops->add_header\
00270 (simple_request, env, header))
00271
00274 #define AXIS2_HTTP_SIMPLE_REQUEST_GET_CONTENT_TYPE(simple_request, env)\
00275 ((simple_request)->ops->get_content_type\
00276 (simple_request, env))
00277
00280 #define AXIS2_HTTP_SIMPLE_REQUEST_GET_CHARSET(simple_request, env) \
00281 ((simple_request)->ops->get_charset\
00282 (simple_request, env))
00283
00286 #define AXIS2_HTTP_SIMPLE_REQUEST_GET_CONTENT_LENGTH(simple_request, env)\
00287 ((simple_request)->ops->get_content_length\
00288 (simple_request, env))
00289
00292 #define AXIS2_HTTP_SIMPLE_REQUEST_GET_BODY(simple_request, env)\
00293 ((simple_request)->ops->get_body\
00294 (simple_request, env))
00295
00298 #define AXIS2_HTTP_SIMPLE_REQUEST_GET_BODY_BYTES(simple_request, env, buf)\
00299 ((simple_request)->ops->get_body_bytes\
00300 (simple_request, env, buf))
00301
00304 #define AXIS2_HTTP_SIMPLE_REQUEST_SET_BODY_STRING(simple_request, env, str)\
00305 ((simple_request)->ops->set_body_string\
00306 (simple_request, env, str))
00307
00310 #define AXIS2_HTTP_SIMPLE_REQUEST_FREE(simple_request, env) \
00311 ((simple_request)->ops->free(simple_request, env))
00312
00313
00314
00316 #ifdef __cplusplus
00317 }
00318 #endif
00319
00320 #endif