void AsyncFile::writevReq( Request * request) { // WriteFileGather on WIN32? writeReq(request); }
void AsyncFile::run() { Request *request; // Create theMemoryChannel in the thread that will wait for it NdbMutex_Lock(theStartMutexPtr); theMemoryChannelPtr = new MemoryChannel<Request>(); theStartFlag = true; // Create write buffer for bigger writes theWriteBufferSize = WRITEBUFFERSIZE; theWriteBufferUnaligned = (char *) ndbd_malloc(theWriteBufferSize + NDB_O_DIRECT_WRITE_ALIGNMENT-1); theWriteBuffer = (char *) (((UintPtr)theWriteBufferUnaligned + NDB_O_DIRECT_WRITE_ALIGNMENT - 1) & ~(UintPtr)(NDB_O_DIRECT_WRITE_ALIGNMENT - 1)); NdbMutex_Unlock(theStartMutexPtr); NdbCondition_Signal(theStartConditionPtr); if (!theWriteBuffer) { DEBUG(ndbout_c("AsyncFile::writeReq, Failed allocating write buffer")); return; }//if while (1) { request = theMemoryChannelPtr->readChannel(); if (!request) { DEBUG(ndbout_c("Nothing read from Memory Channel in AsyncFile")); endReq(); return; }//if m_current_request= request; switch (request->action) { case Request:: open: openReq(request); break; case Request:: close: closeReq(request); break; case Request:: closeRemove: closeReq(request); removeReq(request); break; case Request:: readPartial: case Request:: read: readReq(request); break; case Request:: readv: readvReq(request); break; case Request:: write: writeReq(request); break; case Request:: writev: writevReq(request); break; case Request:: writeSync: writeReq(request); syncReq(request); break; case Request:: writevSync: writevReq(request); syncReq(request); break; case Request:: sync: syncReq(request); break; case Request:: append: appendReq(request); break; case Request:: append_synch: appendReq(request); syncReq(request); break; case Request::rmrf: rmrfReq(request, (char*)theFileName.c_str(), request->par.rmrf.own_directory); break; case Request:: end: if (theFd > 0) closeReq(request); endReq(); return; default: DEBUG(ndbout_c("Invalid Request")); abort(); break; }//switch m_last_request= request; m_current_request= 0; // No need to signal as ndbfs only uses tryRead theReportTo->writeChannelNoSignal(request); }//while }//AsyncFile::run()
void AsyncFile::writevReq(Request * request) { writeReq(request); }
void pki_x509req::writeDefault(const QString fname) { writeReq(fname + QDir::separator() + getIntName() + ".csr", true); }
void pki_x509req::writeDefault(const QString fname) { writeReq(get_dump_filename(fname, ".csr"), true); }