void signaled()

in src/afs.cc [1577:1637]


	void signaled()
	{
		Action action;
		{
			auto session = find_session();
			SharedSessionReleaser sessionReleaser(sessions_, session);
			ProcessorLockGuard lock(this);
			action = session->action;
			session->action = Action::None;
		}
		P("%s: %s: signaled: before: %s", Tag, tag_, action_name(action));
		PG_TRY();
		{
			switch (action)
			{
				case Action::Select:
					select();
					break;
				case Action::Update:
					update();
					break;
				case Action::Prepare:
					prepare();
					break;
				case Action::ClosePreparedStatement:
					close_prepared_statement();
					break;
				case Action::SetParameters:
					set_parameters();
					break;
				case Action::SelectPreparedStatement:
					select_prepared_statement();
					break;
				case Action::UpdatePreparedStatement:
					update_prepared_statement();
					break;
				default:
					// TODO: Report an error
					break;
			}
		}
		PG_CATCH();
		{
			auto session = find_session();
			SharedSessionReleaser sessionReleaser(sessions_, session);
			if (!DsaPointerIsValid(session->errorMessage))
			{
				auto error = CopyErrorData();
				set_error_message(session,
				                  std::string("failed to run: ") + action_name(action) +
				                      ": " + error->message,
				                  "unexpected error");
				FreeErrorData(error);
			}
			pgstat_report_activity(STATE_IDLE, nullptr);
			PG_RE_THROW();
		}
		PG_END_TRY();
		pgstat_report_activity(STATE_IDLE, nullptr);
		P("%s: %s: signaled: after: %s", Tag, tag_, action_name(action));
	}