virtual void operator()() { Task::AbortableWorkItemPtr tempReference(shared_from_this()); if (!prepareExecute()) { return; } unlink(mPath.c_str()); mCallback(true); }
int MySQLFactorerCommunicator::executeUpdate(const char *command) { int ret = prepareExecute(); if( ret ) { ret = stmt->executeUpdate(command); } clearExecute(); return ret; }
sql::ResultSet* MySQLFactorerCommunicator::executeQuery(const char* command) { sql::ResultSet *res = nullptr; if( prepareExecute() ) { res = stmt->executeQuery(command); } clearExecute(); return res; }
void operator() () { Task::AbortableWorkItemPtr tempReference(shared_from_this()); if (!prepareExecute()) { return; } int flags; std::string openPath; if (!mTemporaryPath.empty()) { flags = O_CREAT|O_TRUNC|O_WRONLY; openPath = mTemporaryPath; } else { flags = O_CREAT|O_WRONLY; openPath = mPath; } if (mAppendMode && mTemporaryPath.empty()) { flags |= O_APPEND; } makeParentDir(openPath); mFd = open_at_byte(openPath.c_str(), flags, mData.startbyte()); if (mFd == -1) { aborted(); return; } cache_usize_type pos = mData.startbyte(), length = 0; do { const unsigned char *data = mData.dataAt(pos, length); if (!data) { lseek64(mFd, length, SEEK_CUR); } else { if (!write_full(mFd, data, length)) { aborted(); return; } } pos += length; } while (length); if (!mTemporaryPath.empty()) { // Fixme: Not guaranteed to be ordered with write() calls, google for ext4 data loss. makeParentDir(mPath); rename(mTemporaryPath.c_str(), mPath.c_str()); } mCallback(true); close(mFd); }
void operator() () { Task::AbortableWorkItemPtr tempReference(shared_from_this()); if (!prepareExecute()) { return; } mFd = open_at_byte(mPath.c_str(), O_RDONLY, mRange.startbyte()); if (mFd == -1) { aborted(); return; } struct stat64 st; if (fstat64(mFd, &st)==0 && st.st_size > 0) { mDiskSize = st.st_size; } readLoop(); close(mFd); }
void operator() () { Task::AbortableWorkItemPtr tempReference(shared_from_this()); if (!prepareExecute()) { return; } struct stat64 st; cache_usize_type diskSize = 0; if (stat64(mPath.c_str(), &st)!=0) { aborted(); return; } if (st.st_size > 0) { diskSize = st.st_size; } if (access(mPath.c_str(), R_OK)==0) { mCallback(DenseDataPtr(), true, diskSize); } else { mCallback(DenseDataPtr(), false, diskSize); } }