void open()

in src/afs.cc [1489:1533]


	void open()
	{
		const char* tag = "open";
		// Use this when you want to attach a executor process.
		// sleep(5);
		pgstat_report_activity(STATE_RUNNING, (std::string(Tag) + ": opening").c_str());
		auto session = find_session();
		PG_TRY();
		{
			auto databaseName =
				static_cast<const char*>(dsa_get_address(area_, session->databaseName));
			auto userName =
				static_cast<const char*>(dsa_get_address(area_, session->userName));
			auto password =
				static_cast<const char*>(dsa_get_address(area_, session->password));
			auto clientAddress =
				static_cast<const char*>(dsa_get_address(area_, session->clientAddress));
			BackgroundWorkerInitializeConnection(databaseName, userName, 0);
			CurrentResourceOwner =
				ResourceOwnerCreate(nullptr, "arrow-flight-sql: Executor");
			if (check_password(session, databaseName, userName, password, clientAddress))
			{
				// TODO: Customizable.
				SharedRingBuffer::allocate_data(
					&(session->bufferData), area_, 1L * 1024L * 1024L);
			}
			session->initialized = true;
			localSession_->valid = true;
			localSession_->bufferData = &(session->bufferData);
			localSession_->bufferAddress =
				dsa_get_address(area_, session->bufferData.pointer);
			P("%s: %s: open: %" PRIu64, Tag, tag_, session->bufferData.pointer);
			dshash_release_lock(sessions_, session);
			signal_server(tag);
		}
		PG_CATCH();
		{
			set_error_message(session, "failed to connect", tag);
			session->initialized = true;
			dshash_release_lock(sessions_, session);
			signal_server(tag);
			PG_RE_THROW();
		}
		PG_END_TRY();
	}