arrow::Result write()

in src/afs.cc [3649:3680]


	arrow::Result<size_t> write(LocalSessionData* localSession,
	                            SharedRingBuffer* buffer,
	                            const void* data,
	                            size_t n) override
	{
		auto request = std::make_shared<WriteRequest>(localSession, buffer, data, n);
		{
			std::lock_guard<std::mutex> lock(mutex_);
			writeRequests_.push_back(request);
		}
		kill(MyProcPid, SIGUSR1);
		{
			std::unique_lock<std::mutex> lock(mutex_);
			conditionVariable_.wait(lock, [&] {
				if (localSession->errorMessage.has_value())
				{
					return true;
				}
				if (INTERRUPTS_PENDING_CONDITION())
				{
					return true;
				}
				return request->finished;
			});
		}
		ARROW_RETURN_NOT_OK(check_local_session_error(localSession));
		if (INTERRUPTS_PENDING_CONDITION())
		{
			return arrow::Status::IOError("interrupted");
		}
		return request->writtenBytes;
	}