|
C/C++ Reference
|
00001 /* 00002 * ____ _________ __ _ 00003 * / __ \___ ____ _/ /_ __(_)___ ___ ___ / / ____ ____ _(_)____ 00004 * / /_/ / _ \/ __ `/ / / / / / __ `__ \/ _ \/ / / __ \/ __ `/ / ___/ 00005 * / _, _/ __/ /_/ / / / / / / / / / / / __/ /___/ /_/ / /_/ / / /__ 00006 * /_/ |_|\___/\__,_/_/ /_/ /_/_/ /_/ /_/\___/_____/\____/\__, /_/\___/ 00007 * /____/ 00008 * 00009 * Barracuda Embedded Web-Server 00010 * 00011 **************************************************************************** 00012 * HEADER 00013 * 00014 * $Id: HttpUpload.h 2282 2011-01-15 03:35:20Z wini $ 00015 * 00016 * COPYRIGHT: Real Time Logic LLC, 2006-2008 00017 * http://www.realtimelogic.com 00018 * 00019 * The copyright to the program herein is the property of 00020 * Real Time Logic. The program may be used or copied only 00021 * with the written permission from Real Time Logic LLC or 00022 * in accordance with the terms and conditions stipulated in 00023 * the agreement under which the program has been supplied. 00024 **************************************************************************** 00025 * 00026 * 00027 */ 00028 00029 #ifndef _HttpUpload_h 00030 #define _HttpUpload_h 00031 00032 #include <HttpAsynchReq.h> 00033 #include <MultipartUpload.h> 00034 #include <AuthenticatedUser.h> 00035 #include <IoIntf.h> 00036 00037 struct HttpConnection; 00038 00058 #ifdef __cplusplus 00059 00063 struct HttpUploadNode 00064 { 00066 const char* getName(); 00067 00069 const char* getUrl(); 00070 00076 HttpAsynchResp* getResponse(); 00077 00078 struct HttpConnection* getConnection(); 00079 00080 IoIntfPtr getIoIntf(); 00081 00089 HttpSession* getSession(); 00090 00091 00093 bool isMultipartUpload(); 00094 }; 00095 #else 00096 struct HttpUploadNode; 00097 #endif 00098 00099 #ifdef __cplusplus 00100 extern "C" { 00101 #endif 00102 BA_API const char* HttpUploadNode_getName(struct HttpUploadNode* o); 00103 BA_API const char* HttpUploadNode_getUrl(struct HttpUploadNode* o); 00104 BA_API HttpAsynchResp* HttpUploadNode_getResponse(struct HttpUploadNode* o); 00105 BA_API struct HttpConnection* HttpUploadNode_getConnection( 00106 struct HttpUploadNode* o); 00107 BA_API IoIntfPtr HttpUploadNode_getIoIntf(struct HttpUploadNode* o); 00108 BA_API void* HttpUploadNode_getdata(struct HttpUploadNode* o); 00109 BA_API HttpSession* HttpUploadNode_getSession(struct HttpUploadNode* o); 00110 BA_API BaBool HttpUploadNode_isMultipartUpload(struct HttpUploadNode* o); 00111 BA_API BaBool HttpUploadNode_isResponseMode(struct HttpUploadNode* o); 00112 BA_API BaBool HttpUploadNode_initial(struct HttpUploadNode* o); 00113 BA_API int HttpUploadNode_decrRef(struct HttpUploadNode* o); 00114 BA_API void HttpUploadNode_incRef(struct HttpUploadNode* o); 00115 BA_API void set_inflategzip(IoIntf_InflateGzip ptr); 00116 BA_API IoIntf_InflateGzip get_inflategzip(void); 00117 #ifdef __cplusplus 00118 } 00119 inline const char* HttpUploadNode::getName() { 00120 return HttpUploadNode_getName(this); } 00121 inline const char* HttpUploadNode::getUrl() { 00122 return HttpUploadNode_getUrl(this); } 00123 inline HttpAsynchResp* HttpUploadNode::getResponse() { 00124 return HttpUploadNode_getResponse(this); } 00125 inline struct HttpConnection* HttpUploadNode::getConnection() { 00126 return HttpUploadNode_getConnection(this); } 00127 inline IoIntfPtr HttpUploadNode::getIoIntf() { 00128 return HttpUploadNode_getIoIntf(this); } 00129 inline HttpSession* HttpUploadNode::getSession() { 00130 return HttpUploadNode_getSession(this); } 00131 inline bool HttpUploadNode::isMultipartUpload() { 00132 return HttpUploadNode_isMultipartUpload(this) ? true : false; } 00133 #endif 00134 00135 00136 00137 #ifndef __DOXYGEN__ 00138 struct HttpUploadCbIntf; 00139 #endif 00140 00141 typedef void (*HttpUploadCbIntf_OnFile)( 00142 struct HttpUploadCbIntf* o, struct HttpUploadNode* node, BaBool completed); 00143 typedef void (*HttpUploadCbIntf_OnError)( 00144 struct HttpUploadCbIntf* o, struct HttpUploadNode* node, 00145 int ecode, const char* extraEcode); 00146 00152 typedef struct HttpUploadCbIntf 00153 { 00154 #ifdef __cplusplus 00155 HttpUploadCbIntf(){} 00156 00161 HttpUploadCbIntf(HttpUploadCbIntf_OnFile of,HttpUploadCbIntf_OnError oe); 00162 #endif 00163 HttpUploadCbIntf_OnFile onFileFp; 00164 HttpUploadCbIntf_OnError onErrorFp; 00165 } HttpUploadCbIntf; 00166 00167 #define HttpUploadCbIntf_constructor(o, onFile, onError) do { \ 00168 (o)->onFileFp=onFile; \ 00169 (o)->onErrorFp=onError; \ 00170 } while(0) 00171 00172 #ifdef __cplusplus 00173 inline HttpUploadCbIntf::HttpUploadCbIntf( 00174 HttpUploadCbIntf_OnFile of,HttpUploadCbIntf_OnError oe) { 00175 HttpUploadCbIntf_constructor(this, of, oe); 00176 } 00177 #endif 00178 00179 00185 typedef struct HttpUpload 00186 { 00187 #ifdef __cplusplus 00188 HttpUpload() {} 00189 00204 HttpUpload(IoIntfPtr io, AllocatorIntf* alloc, 00205 HttpUploadCbIntf* uploadCb, int maxUploads); 00206 00209 ~HttpUpload(); 00210 00221 int service(const char* name, HttpCommand* cmd, void* userdata=0); 00222 00225 IoIntfPtr getIoIntf(); 00226 #endif 00227 00228 DoubleList uploadNodeList; 00229 IoIntfPtr io; 00230 AllocatorIntf* alloc; 00231 HttpUploadCbIntf* uploadCb; 00232 int uploadsLeft; 00233 } HttpUpload; 00234 00235 #ifdef __cplusplus 00236 extern "C" { 00237 #endif 00238 BA_API void HttpUpload_constructor( 00239 HttpUpload* o, IoIntfPtr io, AllocatorIntf* alloc, 00240 HttpUploadCbIntf* uploadCb, int maxUploads); 00241 BA_API void HttpUpload_destructor(HttpUpload* o); 00242 BA_API int HttpUpload_service( 00243 HttpUpload* o, const char* name, HttpCommand* cmd, void* userdata); 00244 #define HttpUpload_getIoIntf(o) (o)->io 00245 #ifdef __cplusplus 00246 } 00247 inline HttpUpload::HttpUpload(IoIntfPtr io, AllocatorIntf* alloc, 00248 HttpUploadCbIntf* uploadCb, int maxUploads) { 00249 HttpUpload_constructor(this, io, alloc, uploadCb, maxUploads); } 00250 inline HttpUpload::~HttpUpload() { 00251 HttpUpload_destructor(this); } 00252 inline int HttpUpload::service(const char* name, HttpCommand* cmd, void* userdata) { 00253 return HttpUpload_service(this, name, cmd,userdata); } 00254 inline IoIntfPtr HttpUpload::getIoIntf() { 00255 return HttpUpload_getIoIntf(this); } 00256 #endif 00257 /* end of HttpUpload */ 00259 00260 #endif