C/C++ Reference
HttpUpload.h
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