arrow::Status wait_internal()

in src/afs.cc [3726:3758]


	arrow::Status wait_internal(LocalSessionData* localSession,
	                            SharedRingBuffer* buffer,
	                            WaitMode mode,
	                            const char* tag) override
	{
		std::unique_lock<std::mutex> lock(mutex_);
		conditionVariable_.wait(lock, [&] {
			P("%s: %s: %s: %s: wait: %" PRIsize ": error: %s",
			  Tag,
			  tag_,
			  tag,
			  peer_name(),
			  get_waiting_buffer_size(buffer, mode),
			  localSession->errorMessage.has_value()
			      ? localSession->errorMessage.value().c_str()
			      : "");
			if (localSession->errorMessage.has_value())
			{
				return true;
			}
			if (INTERRUPTS_PENDING_CONDITION())
			{
				return true;
			}
			return get_waiting_buffer_size(buffer, mode) > 0;
		});
		ARROW_RETURN_NOT_OK(check_local_session_error(localSession, true));
		if (INTERRUPTS_PENDING_CONDITION())
		{
			return arrow::Status::Invalid(tag_, ": ", tag, ": ", "interrupted");
		}
		return arrow::Status::OK();
	}