bool CLogSerializer::EnsureDirectory(StringBuffer& Dir) { try{ Owned<IFile> pDirectory = createIFile(Dir.str()); if(pDirectory->exists() == true) return true; return pDirectory->createDirectory(); } catch(IException *ex) { ex->Release(); } return false; }
void open() { char drive [_MAX_DRIVE]; char dir [_MAX_DIR]; char fname [_MAX_DIR]; char ext [_MAX_EXT]; _splitpath(fileName.str(), drive, dir, fname, ext); StringBuffer directory; directory.append(drive).append(dir); Owned<IFile> cd = createIFile(directory.str()); cd->createDirectory(); IHThorSpillArg *helper = (IHThorSpillArg *)queryHelper(); void *ekey; size32_t ekeylen; helper->getEncryptKey(ekeylen,ekey); Owned<ICompressor> ecomp; if (ekeylen!=0) { ecomp.setown(createAESCompressor256(ekeylen,ekey)); memset(ekey,0,ekeylen); free(ekey); compress = true; } Owned<IFile> file = createIFile(fileName.str()); Owned<IFileIO> iFileIO; bool fixedRecordSize = queryRowMetaData()->isFixedSize(); size32_t minrecsize = queryRowMetaData()->getMinRecordSize(); if (fixedRecordSize) ActPrintLog("SPILL: created fixed output %s recsize=%u", (0!=ekeylen)?"[encrypted]":compress?"[compressed]":"",minrecsize); else ActPrintLog("SPILL: created variable output %s, minrecsize=%u", (0!=ekeylen)?"[encrypted]":compress?"[compressed]":"",minrecsize); unsigned rwFlags = (DEFAULT_RWFLAGS & ~rw_autoflush); // flushed by close() if (compress) rwFlags |= rw_compress; else rwFlags |= rw_crc; // only if !compress if (grouped) rwFlags |= rw_grouped; out.setown(createRowWriter(file, this, rwFlags)); }
void CLocalDataLogger::Init(const char* logDirectory,const char* ext,const char* UrlRoot, unsigned TimerPeriod,unsigned CacheTimeoutPeriod) { if(!logDirectory || !ext) throw MakeStringException(-1,"Invalid parameters passed to cLocalDataLogger::Init"); StringBuffer pathtodir; pathtodir.appendf("%s",logDirectory); Owned<IFile> pDirectory = createIFile(pathtodir.str()); if(pDirectory->exists() == false) pDirectory->createDirectory(); m_UrlRoot.appendf("%s",UrlRoot); m_logDirectory.append(logDirectory); StringBuffer dirpath; dirpath.appendf("%s",logDirectory); m_CleanupThread.setown(new CFileCleanupThread(dirpath,ext,TimerPeriod,CacheTimeoutPeriod)); m_CleanupThread->start(); }