00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef AXIS2_HTTP_CHUNKED_STREAM_H
00019 #define AXIS2_HTTP_CHUNKED_STREAM_H
00020
00033 #include <axis2_const.h>
00034 #include <axis2_defines.h>
00035 #include <axis2_env.h>
00036 #include <axis2_stream.h>
00037
00038
00039 #ifdef __cplusplus
00040 extern "C"
00041 {
00042 #endif
00043
00045 typedef struct axis2_http_chunked_stream_ops axis2_http_chunked_stream_ops_t;
00047 typedef struct axis2_http_chunked_stream axis2_http_chunked_stream_t;
00048
00049
00054 struct axis2_http_chunked_stream_ops
00055 {
00062 int (AXIS2_CALL *
00063 read)(
00064 axis2_http_chunked_stream_t *chunked_stream,
00065 const axis2_env_t *env,
00066 void *buffer,
00067 size_t count);
00068
00074 int (AXIS2_CALL *
00075 write)(
00076 axis2_http_chunked_stream_t *chunked_stream,
00077 const axis2_env_t *env,
00078 const void *buffer,
00079 size_t count);
00080
00085 int (AXIS2_CALL *
00086 get_current_chunk_size)(
00087 const axis2_http_chunked_stream_t *chunked_stream,
00088 const axis2_env_t *env);
00089
00095 axis2_status_t (AXIS2_CALL *
00096 write_last_chunk)(
00097 axis2_http_chunked_stream_t *chunked_stream,
00098 const axis2_env_t *env);
00099
00105 axis2_status_t (AXIS2_CALL *
00106 free)(
00107 axis2_http_chunked_stream_t *chunked_stream,
00108 const axis2_env_t *env);
00109 };
00110
00114 struct axis2_http_chunked_stream
00115 {
00117 axis2_http_chunked_stream_ops_t *ops;
00118 };
00119
00120
00125 AXIS2_EXTERN axis2_http_chunked_stream_t * AXIS2_CALL
00126 axis2_http_chunked_stream_create(
00127 const axis2_env_t *env,
00128 axis2_stream_t* stream);
00129
00130
00131
00134 #define AXIS2_HTTP_CHUNKED_STREAM_READ(chunked_stream, env, buffer, count) \
00135 ((chunked_stream)->ops->read(chunked_stream, env, \
00136 buffer, count))
00137
00140 #define AXIS2_HTTP_CHUNKED_STREAM_WRITE(chunked_stream, env, buffer, count) \
00141 ((chunked_stream)->ops->write(chunked_stream, env, \
00142 buffer, count))
00143
00146 #define AXIS2_HTTP_CHUNKED_GET_CURRENT_CHUNK_SIZE(chunked_stream, env) \
00147 ((chunked_stream)->ops->get_current_chunk_size \
00148 (chunked_stream, env))
00149
00152 #define AXIS2_HTTP_CHUNKED_STREAM_WRITE_LAST_CHUNK(chunked_stream, env) \
00153 ((chunked_stream)->ops->write_last_chunk(chunked_stream\
00154 , env))
00155
00158 #define AXIS2_HTTP_CHUNKED_STREAM_FREE(chunked_stream, env) \
00159 ((chunked_stream)->ops->free(chunked_stream, env))
00160
00161
00162
00164 #ifdef __cplusplus
00165 }
00166 #endif
00167 #endif