DCL 4.0
Loading...
Searching...
No Matches
StoredHttpFormData Class Reference

#include <HttpCollection.h>

Inheritance diagram for StoredHttpFormData:
HttpFormData Object

Public Member Functions

 StoredHttpFormData (const String &strTempDir)
virtual ~StoredHttpFormData ()
size_t size () const
bool isEmpty () const
FileInfoArray & operator[] (size_t _index)
FileInfoArray & byName (const wchar_t *_name)
Public Member Functions inherited from Object
virtual String toString () const
virtual void destroy ()
String className () const
bool isInstanceOf (const std::type_info &typeinfo) const
virtual const std::type_info & typeInfo () const

Protected Member Functions

virtual bool onFileStart (const PartHeader &header, void **ppCallbackData, String &strCallbackError)
virtual bool onFileData (const void *pData, size_t nSize, void *pCallbackData, String &strCallbackError)
virtual bool onFileEnd (const PartHeader &header, void *pCallbackData, bool bDataSuccess, String &strCallbackError)
Protected Member Functions inherited from Object
virtual ~Object ()
 Object ()

Detailed Description

Definition at line 315 of file HttpCollection.h.

Constructor & Destructor Documentation

◆ StoredHttpFormData()

StoredHttpFormData::StoredHttpFormData ( const String & strTempDir)

Definition at line 1110 of file HttpCollection.cpp.

1111{
1112 __DCL_ASSERT(!strTempDir.isEmpty());
1113
1114 __tempDir = strTempDir;
1115
1116 __handle = new PointerArray;
1117 __DCL_ASSERT(__handle != NULL);
1118}
#define NULL
Definition Config.h:340
#define __DCL_ASSERT(expr)
Definition Object.h:371

◆ ~StoredHttpFormData()

StoredHttpFormData::~StoredHttpFormData ( )
virtual

Definition at line 1120 of file HttpCollection.cpp.

1121{
1122 __DCL_ASSERT(__handle != NULL);
1123 PointerArray* p = __V();
1124 PointerArray& v = *p;
1125 for(size_t i = 0; i < v.size(); i++)
1126 delete (FileInfoArray*)v[i];
1127 v.clear();
1128 delete p;
1129}
#define __V()

Member Function Documentation

◆ byName()

StoredHttpFormData::FileInfoArray & StoredHttpFormData::byName ( const wchar_t * _name)

Definition at line 1151 of file HttpCollection.cpp.

1153{
1154 __DCL_ASSERT(_name != NULL && *_name != '\0');
1155
1156 FileInfoArray* pV = NULL;
1157 PointerArray& v = *(PointerArray*)__handle;
1158 for(size_t i = 0; i < v.size(); i++) {
1159 pV = (FileInfoArray*)(v[i]);
1160 if (pV->__name == _name)
1161 return *pV;
1162 }
1163
1164 pV = new FileInfoArray(_name);
1165 v.add(pV);
1166 return *pV;
1167}

◆ isEmpty()

bool StoredHttpFormData::isEmpty ( ) const

Definition at line 1137 of file HttpCollection.cpp.

1138{
1139 __DCL_ASSERT(__handle != NULL);
1140 return __V()->isEmpty();
1141}

◆ onFileData()

bool StoredHttpFormData::onFileData ( const void * pData,
size_t nSize,
void * pCallbackData,
String & strCallbackError )
protectedvirtual

Reimplemented from HttpFormData.

Definition at line 1229 of file HttpCollection.cpp.

1235{
1236 STORED_CALLBACK_DATA* pCB = (STORED_CALLBACK_DATA*)pCallbackData;
1237 __DCL_ASSERT(pCB != NULL);
1238
1239 try {
1240 pCB->output->write(pData, nSize);
1241 pCB->dataSize += nSize;
1242 }
1243 catch(IOException* e) {
1244 try {
1245 delete pCB->output;
1247 }
1248 catch(IOException* e) {
1249 __DCL_TRACE1(L"%ls\n", e->toString().data());
1250 e->destroy();
1251 }
1252
1253 delete pCB;
1254
1255 strCallbackError = e->toString();
1256 e->destroy();
1257 return false;
1258 }
1259 return true;
1260}
struct _STORED_CALLBACK_DATA STORED_CALLBACK_DATA
#define __DCL_TRACE1(fmt, arg1)
Definition Object.h:376
virtual void destroy()
Definition Exception.cpp:74
static void unlink(const String &_path) __DCL_THROWS1(IOException *)
Definition Files.cpp:97
virtual String toString() const
FileOutputStream * output

◆ onFileEnd()

bool StoredHttpFormData::onFileEnd ( const PartHeader & header,
void * pCallbackData,
bool bDataSuccess,
String & strCallbackError )
protectedvirtual

Reimplemented from HttpFormData.

Definition at line 1262 of file HttpCollection.cpp.

1268{
1269 STORED_CALLBACK_DATA* pCB = (STORED_CALLBACK_DATA*)pCallbackData;
1270 __DCL_ASSERT(pCB != NULL);
1271 try {
1272 delete pCB->output;
1273
1275 L"fileSize: %zd, dataSize: %zd\n",
1277 pCB->dataSize
1278 );
1279 }
1280 catch(IOException* e) {
1281 try {
1283 }
1284 catch(IOException* e) {
1285 __DCL_TRACE1(L"%ls\n", e->toString().data());
1286 e->destroy();
1287 }
1288
1289 strCallbackError = e->toString();
1290 e->destroy();
1291 delete pCB;
1292
1293 return false;
1294 }
1295
1296
1297 if (bDataSuccess) {
1298 FileInfo* pInfo = new FileInfo;
1299
1300 __DCL_ASSERT(pInfo != NULL);
1301
1302 pInfo->filename = header.filename;
1303 pInfo->contentType = header.contentType;
1304 pInfo->fileSize = pCB->dataSize;
1305 pInfo->tempFilename = pCB->tempFilename;
1306
1307 insert(header.name, pInfo);
1308 }
1309
1310 delete pCB;
1311
1312 return true;
1313}
#define __DCL_TRACE2_N(fmt, arg1, arg2)
static uint64_t size(const String &_path) __DCL_THROWS1(IOException *)
Definition Files.cpp:161

◆ onFileStart()

bool StoredHttpFormData::onFileStart ( const PartHeader & header,
void ** ppCallbackData,
String & strCallbackError )
protectedvirtual

Reimplemented from HttpFormData.

Definition at line 1187 of file HttpCollection.cpp.

1192{
1193 String filename;
1194 FileOutputStream* pOut = NULL;
1195 try {
1196 File* pFile = File::openTempFile(
1197 __tempDir,
1198 L"dclformdata"
1199 );
1200 pOut = new FileOutputStream(pFile);
1201 filename = pFile->path();
1202 }
1203 catch(IOException* e) {
1204 if (!filename.isEmpty()) {
1205 try {
1206 Files::unlink(filename);
1207 }
1208 catch (IOException* e) {
1209 __DCL_TRACE1(L"%ls\n", e->toString().data());
1210 e->destroy();
1211 }
1212 }
1213 strCallbackError = e->toString();
1214 e->destroy();
1215 return false;
1216 }
1217
1219 __DCL_ASSERT(pCB != NULL);
1220 pCB->tempFilename = filename;
1221 pCB->output = pOut;
1222 pCB->dataSize = 0;
1223
1224 *ppCallbackData = pCB;
1225
1226 return true;
1227}
static File * openTempFile(const String &_dirname, const String &_prefix, unsigned int _mode=0666) __DCL_THROWS1(IOException *)
Definition File.cpp:721
const String & path() const
Definition File.h:247

◆ operator[]()

StoredHttpFormData::FileInfoArray & StoredHttpFormData::operator[] ( size_t _index)

Definition at line 1144 of file HttpCollection.cpp.

1145{
1146 __DCL_ASSERT(_index < __V()->size());
1147 return *((FileInfoArray*)((*__V())[_index]));
1148}

◆ size()

size_t StoredHttpFormData::size ( ) const

Definition at line 1131 of file HttpCollection.cpp.

1132{
1133 __DCL_ASSERT(__handle != NULL);
1134 return __V()->size();
1135}

The documentation for this class was generated from the following files: