void ConnectOperation::logConnectCompleted()

in squangle/mysql_client/Operation.cpp [795:823]


void ConnectOperation::logConnectCompleted(OperationResult result) {
  // If the connection wasn't initialized, it's because the operation
  // was cancelled before anything started, so we don't do the logs
  if (!conn()->hasInitialized()) {
    return;
  }
  auto elapsed = std::chrono::duration_cast<std::chrono::microseconds>(
      end_time_ - start_time_);
  if (result == OperationResult::Succeeded) {
    client()->logConnectionSuccess(
        db::CommonLoggingData(getOperationType(), elapsed),
        *conn()->getKey(),
        connection_context_.get());
  } else {
    db::FailureReason reason = db::FailureReason::DATABASE_ERROR;
    if (result == OperationResult::TimedOut) {
      reason = db::FailureReason::TIMEOUT;
    } else if (result == OperationResult::Cancelled) {
      reason = db::FailureReason::CANCELLED;
    }
    client()->logConnectionFailure(
        db::CommonLoggingData(getOperationType(), elapsed),
        reason,
        *conn()->getKey(),
        mysql_errno(),
        mysql_error(),
        connection_context_.get());
  }
}