Status tryConnect()

in squangle/mysql_client/SyncMysqlClient.h [76:102]


    Status tryConnect(
        MYSQL* mysql,
        const ConnectionOptions& opts,
        const ConnectionKey& key,
        int flags) override {
      auto qtmo = std::chrono::duration_cast<std::chrono::milliseconds>(
                      opts.getQueryTimeout())
                      .count();
      auto ctmo = std::chrono::duration_cast<std::chrono::milliseconds>(
                      opts.getTimeout())
                      .count();

      mysql_options(mysql, MYSQL_OPT_CONNECT_TIMEOUT_MS, &ctmo);
      mysql_options(mysql, MYSQL_OPT_READ_TIMEOUT_MS, &qtmo);
      mysql_options(mysql, MYSQL_OPT_WRITE_TIMEOUT_MS, &qtmo);

      const auto rv = mysql_real_connect(
          mysql,
          key.host.c_str(),
          key.user.c_str(),
          key.password.c_str(),
          key.db_name.c_str(),
          key.port,
          nullptr,
          flags);
      return rv == nullptr ? ERROR : DONE;
    }