std::shared_ptr AsyncConnectionPool::beginConnection()

in squangle/mysql_client/AsyncConnectionPool.cpp [200:231]


std::shared_ptr<ConnectOperation> AsyncConnectionPool::beginConnection(
    const std::string& host,
    int port,
    const std::string& database_name,
    const std::string& user,
    const std::string& password,
    const std::string& special_tag) {
  std::shared_ptr<ConnectPoolOperation> ret;
  {
    std::unique_lock<std::mutex> lock(shutdown_mutex_);
    // Assigning here to read from pool safely
    ret = std::make_shared<ConnectPoolOperation>(
        getSelfWeakPointer(),
        mysql_client_,
        ConnectionKey(
            host,
            port,
            database_name,
            user,
            password,
            special_tag,
            poolPerMysqlInstance()));
    if (shutting_down_) {
      LOG(ERROR)
          << "Attempt to start pool operation while pool is shutting down";
      ret->cancel();
    }
  }

  mysql_client_->addOperation(ret);
  return ret;
}