示例#1
0
	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;
}
示例#4
0
	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);
	}
示例#5
0
	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);
	}
示例#6
0
	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);
		}
	}